创建开源镜像仓库

实验室工作中需要时常安装、更新linux下的相关包,由于内部网络限制,使用官方yum安装变得很困难。另外网速这个是硬伤。所以将实验室用到的一些相关源镜像到本地,方便大家工作。

nginx服务搭建

选择nginx作为web服务,小巧轻便。操作系统:CentOS 6.x

nginx安装

  1. 添加nginx源

    #
    vi /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/6/$basearch/
    gpgcheck=0
    enabled=1
  2. 安装nignx

    #
    yum info nginx
    yum install -y nginx

参考:http://nginx.org/en/linux_packages.html

nginx配置

Nginx目录浏览功能,在http {下面添加以下内容:

# vi /etc/nginx/nginx.conf
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;

启动Nginx服务

#
service nginx start
service nginx reload
netstat -lntp | grep nginx
ps -ef | grep nginx

缺省是一个master,一个slave,可以在配置nginx.conf文件里调整。

设置开机自动启动

#
chkconfig nginx on

开放端口

#
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save

镜像同步

源地址

  1. CentOS官方标准源:rsync://mirrors.kernel.org/centos,rsync://mirrors.ustc.edu.cn/centos/
  2. rpmforge源:rsync://ftp-stud.fht-esslingen.de/dag,rsync://mirrors.ispros.com.bd/repoforge/
  3. epel源:rsync://mirrors.kernel.org/fedora-epel,rsync://mirrors.ustc.edu.cn/epel/
  4. cpan源:rsync://mirrors.ustc.edu.cn/CPAN/
  5. ceph源:rsync -avrt rsync://ceph.mirror.iweb.ca/ceph
  6. openstack源:rsync -avrt rsync://repos.fedorapeople.org/people-repos/openstack
  7. mariadb源: rsync -a –partial –delete-after –delay-updates rsync.osuosl.org::mariadb,rsync -avP archive.mariadb.org::mariadb
    rsync://mirror.aarnet.edu.au/pub/MariaDB
  8. percona源 rsync -avrt rsync://rsync.percona.com/rsync /mirror/percona/

rsync安装

#
yum install -y rsync xinetd
vi /etc/xinetd.d/rsync
disable = no #修改为
/etc/init.d/xinetd start #启动(CentOS中是以xinetd 来管理Rsync服务的)

添加脚本定时执行任务

#
vi /etc/crontab
0 1 * * * root /mirror/mirror_rsync.sh
service crond restart

Ubuntu源同步

安装apt-mirror

#
yum install -y apt-mirror

配置说明

目前Ubuntu的主要版本有5个,具体如下:
Ubuntu 15.04 (Vivid Vervet)
Ubuntu 14.10 (Utopic Unicorn)
Ubuntu 14.04.3 LTS (Trusty Tahr)
Ubuntu 12.04.5 LTS (Precise Pangolin)
Ubuntu 10.04.4 LTS (Lucid Lynx)

下面就构建Ubuntu 14.04 64bit的本地Ubuntu mirror服务器为例子,来说明如何配置:

#
mkdir -p /mirror/apt-mirror
mv /etc/apt-mirror.list /etc/apt-mirror.listbak
vi /etc/apt-mirror.list
############# config ##################
set base_path /mirror/apt-mirror
set mirror_path $base_path/mirror
set skel_path $base_path/skel
set var_path $base_path/var
set cleanscript $var_path/clean.sh
#set defaultarch <running host architecture>
set defaultarch amd64
set postmirror_script $var_path/postmirror.sh
set run_postmirror 0
set nthreads 20
set _tilde 0
############# end config ##############
deb-amd64 http://mirrors.sohu.com/ubuntu/ precise main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ precise-proposed main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ precise-security main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ precise-updates main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ trysty main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ trysty-backports main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ trysty-proposed main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ trysty-security main restricted universe multiverse
deb-amd64 http://mirrors.sohu.com/ubuntu/ trysty-updates main restricted universe multiverse
clean http://mirrors.sohu.com/ubuntu
#ubuntu extras
deb-src http://extras.ubuntu.com/ubuntu precise main
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu trysty main
deb http://extras.ubuntu.com/ubuntu trysty main
clean http://extras.ubuntu.com/ubuntu
#mesosphere源
deb http://repos.mesosphere.io/ubuntu trusty main
clean http://repos.mesosphere.io/ubuntu

备注:
deb-amd64 表示下载64bit 版本的deb 软件;
precise 表示Ubuntu 12.04的代号;
只下载precise ,大约需要43GB的存储空间;
下载precise-backports precise-proposed precise-security precise-updates,估计需要75GB的空间。

同步镜像

设置完成后,然后新建一个screen终端(个人习惯),用于后台运行镜像同步。

#
yum install -y screen
screen -dmS apt-mirror
screen -r apt-mirror
apt-mirror

这时系统会启动20个线程运行wget 到 http://mirrors.sohu.com/Ubuntu 下面下载相应的deb包。时间比较的长,该命令执行完成后,/var/spool/apt-mirror目录下就有了所有需要的deb包和相应的配置文件。

这里使用nginx作为Web服务器,默认根目录在/usr/share/nginx/html/,所以可以在该目录下做个链接,如下所示:

#
cd /usr/share/nginx/html
ln /mirror/apt-mirror/mirror/mirrors.sohu.com/ubuntu -s

配置自动同步

使用crontab进行每天的更新,修改配置文件:

#
cat /etc/cron.d/apt-mirror
# Regular cron jobs for the apt-mirror package
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

系统会自动使用apt-mirror去和sohu服务器更新。

配置客户端

在其它的服务器上修改APT源地址为该服务器的IP,如”192.178.102.249”,然后使用本地镜像服务了。

$ sudo sed -i s/security.ubuntu.com/192.178.102.249/g /etc/apt/sources.list
$ sudo sed -i s/archive.ubuntu.com/192.178.102.249/g /etc/apt/sources.list
$ sudo apt-get update

Openstack源同步

  • centos、redhat

    #
    rsync -avrt rsync://repos.fedorapeople.org/people-repos/openstack /mirror
  • ubuntu
    OpenStack(juno,kilo,liberty源)
    方法同制作ubuntu源,需要修改源地址为

    deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/icehouse main
    deb-src http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/icehouse main
    deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
    deb-src http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
    deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/kilo main
    deb-src http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/kilo main
    deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/liberty main
    deb-src http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/liberty main

    ln -s /mirror/apt-mirror/mirror/ubuntu-cloud.archive.canonical.com/ubuntu/ /usr/share/nginx/html/openstack-ubuntu

CloudStack源同步

官方提供了CloudStack镜像服务器rsync服务,我们只要参考官方文档进行相关配置将其同步下来即可。

参考:http://cloudstack.apt-get.eu/README

官方文档(但是存在错误),应该按照下面的来:

#
mkdir -p /mirror/cloudstack
cd /mirror/cloudstack
rsync -avr --delete cloudstack.apt-get.eu::cloudstack
//For Debian/Ubuntu:
rsync -avr --delete cloudstack.apt-get.eu::cloudstack/ubuntu .
//For RedHat/CentOS
rsync -avr --delete cloudstack.apt-get.eu::cloudstack/rhel .

备注:rsync 参数解释:-a 参数,相当于-rlptgoD,-l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;-r 是递归,-v 传输时的进度等信息;

配置本地yum源

挂载镜像

#
mkdir /media/rhel
mount /dev/cdrom /media/rhel

生成YUM通用数据库(可选)

#
yum install createrepo
cd /var/ftp/pub
createrepo .

配置本地yum源

#
cd /etc/yum.repos.d/
vi rhel-media.repo
[Local]
name=Local
baseurl=file:///media/rhel
enable=1
gpgcheck=0

常用的yum命令

  1. 安装
    yum install package 安装指定的安装包package1
    yum localinstall package 本地安装软件包

  2. 更新和升级
    yum update 全部更新
    yum update package 更新指定程序包package
    yum check-update 检查可更新的程序

  3. 查找和显示
    yum info 显示安装包信息
    yum list 显示所有已经安装和可以安装的程序包
    yum list 显示指定程序包安装情况
    yum search 查找软件包

  4. 删除程序
    yum remove | erase package1 删除程序包
    yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除.
    yum clean headers清除header
    yum clean packages清除下载的rpm包
    yum clean all 清除header与rpm包