一. 为什么要自建更新源
当内网中有多台CentOS机器时,如果每次更新都走外网的话,通常有如下缺点:
1. 内网机器需要多次开通访问外网权限,且影响安全性;
2. 更新速度慢,浪费时间和公司带宽。
因此,我们可以建立内网中的更新源,克服上述缺陷。
二. 如何自建更新源
1. 安装 rsync、screen:
yum install rsync screen -y
2. 编写脚本:
#!/bin/bash
INTERVAL=60
CENTOS_SRC=\'#\'" //mirrors.kernel.org/centos/"
SRC_PATH="/rsync/centos"
/bin/mkdir -p ${SRC_PATH} &>/dev/null
echo "sync centos source from ${CENTOS_SRC}"
/usr/bin/rsync -azPS -4 --bwlimit 256 \
--exclude *ia64* --exclude *powerpc* --exclude *sparc* \
--exclude *.iso --exclude *.orig.tar.gz ${CENTOS_SRC} ${SRC_PATH}
sleep ${INTERVAL}
这里保存为/root/rsync/rsync.sh
chmod a+x /root/rsync/rsync.sh #添加执行权限
注意,这里排除了很多用不到的包,以及庞大的光盘镜像,因为在日常更新中我们并不能用得到它们。
3. 在screen中运行该脚本:
screen -S rsync #将此screen命名为rsync
/root/rsync/rsync.sh
在screen中运行的目的是为了可以随时查看与官方源的同步进度。
为免影响公司中正常的网络行为,节约带宽,也可以设置在cron中执行:
crontab -e
0 3 * * * /root/rsync/rsync.sh
#每日凌晨3点运行该脚本同步
接下来就是漫长的第一次同步了,根据网速不同以及 bwlimit 参数的限制,可能需要同步个四五天 :P
三. 如何使用更新源
1. 配置webserver
我们这里使用Apache举例,当然,其他的webserver同样可以,如Nginx
添加个虚拟主机,配置可以这么写,注意替换你的域名和目录:
<VirtualHost *:80>
ServerName centos.yourdomain.net
ServerAlias somealias.yourdomain.net
ServerAdmin [email protected]
DocumentRoot "/rsync/centos"
<Directory "/rsync/centos">
Options Includes Indexes MultiViews FollowSymLinks
php_admin_flag engine ON
php_admin_value open_basedir "/rsync/centos:/tmp"
</Directory>
</VirtualHost>
保存后重启apache,service httpd restart,让配置生效。
2. 配置域名解析
这里就不多说了,在域名面板中将centos.yourdomain.net解析到你的server ip。
如果无权限修改域名解析,那就改/etc/hosts文件,效果一样。
3. 配置yum
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
sed -i -e "s/mirrorlist=/#mirrorlist=/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i -e "s/#baseurl/baseurl/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i -e "s#mirror.centos.org/centos#centos.yourdomain.net#g" /etc/yum.repos.d/CentOS-Base.repo
# 更改repo中为自建源
sed -i -e "s/enabled=1/enabled=0/" /etc/yum/pluginconf.d/fastestmirror.conf
# 关闭yum-fastestmirror插件
4. 测试yum
yum update
如果可以正常更新不报错,则设置成功。
四. 备注
1. 注意rsync同步目标目录的权限,以及apache虚拟主机配置中的options;
2. 脚本仍有可精简的余地,如庞大的openoffice,以及过期已久的版本目录,都可以exclude之;
3. 注意:千万不可yum remove yum-fastestmirror,否则会连yum一起卸掉,造成灾难性的后果。