一、導言
YUM主要用於自動安裝、升級rpm軟件包,它能自動查找並解決rpm包之間的依賴關系。要成功的使用YUM工具安裝更新軟件或系統,就需要有一個包含各種rpm軟件包的repository(軟件倉庫),這個軟件倉庫我們習慣稱為yum源。網絡上有大量的yum源,但由於受到網絡環境的限制,導致軟件安裝耗時過長甚至失敗。特別是當有大量服務器大量軟件包需要安裝時,緩慢的進度條令人難以忍受。因此我們在優化系統時,都會更換國內的源。
相比較而言,本地YUM源服務器最大優點是局域網的快速網絡連接和穩定性。有了局域網中的YUM源服務器,即便在Internet連接中斷的情況下,也不會影響其他YUM客戶端的軟件安裝和升級。
二、搭建流程
1、准備一台服務器做yum倉
主機IP:10.0.0.71
操作系統:centos 6.9_x_86_64
2、創建yum倉目錄
mkdir -p /yum/centos6.9/x86_64/ cd /yum/centos6.9/x86_64/
3、安裝createrepo軟件
yum -y install createrepo
4、初始化repodata索引文件
createrepo -pdo /yum/centos6.9/x86_64/ /yum/centos6.9/x86_64/
5、提供yum服務
可以使用web服務軟件Apache或nginx提供web服務,但用Python的http模塊更簡答,使用於內網環境
cd /yum/centos6.9/x86_64 python -m SimpleHTTPServer 80 &>/dev/null &
查看方法:通過瀏覽器輸入yum倉服務器的IP(10.0.0.71)即可查看
5、添加新的rpm包
yumdownloader pcre-devel openssl-devel # 只下載軟件不安裝 createrepo --update /application/yum/centos6.6/x86_64/ # 每加入新的rpm包就要更新一下
注:收集rpm包
平時yum安裝軟件時不刪除安裝包
vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever #安裝包存儲目錄
keepcache=1 #安裝不刪除,0為刪除 1為保存
debuglevel=2
logfile=/var/log/yum.log
三、安裝apache軟件提供yum服務
1、安裝apache服務
yum install -y httpd /etc/init.d/http start #檢查服務器是否正常啟動 netstart -lntup | grep httpd
2、解析綁定域名
#centos系統操作 echo “10.0.0.71 yum.zhang.com” >>/etc/hosts #windows操作 在hosts文件中添加 10.0.0.71 yum.zhang.com
3、訪問網站
在瀏覽器中輸入:yum.zhang.com
4、修改apache配置文件提供yum倉下載服務
修改配置文件/etc/httpd/conf/httpd.conf,將默認的www目錄指向本地創建的yum倉庫目錄
#給apache授權
chown -R apache.apache /yum/
#修改配置文件制定yum倉目錄
sed -i.bak 's#DocumentRoot "/var/www/html"#DocumentRoot "/yum"#g;s#<Directory "/var/www/html">#<Directory "/yum">#g' /etc/httpd/conf/httpd.conf mv /etc/httpd/conf/conf.d/welcome.conf /tmp #刪除默認主頁 /etc/init.d/httpd restart
5、在瀏覽器輸入yum.zhang.com測試訪問
四、配置客戶端
示例1:centos 6.x系統yum源配置
cd /etc/yum.repos.d/ vim localyum.repo [root@yum yum.repos.d]# vi localyum.repo [localyum] name=centos6 baseurl=http://yum.zhang.com/centos/6/os/x86_64/ enable=1 gpgcheck=0 [localepel] name=epel baseurl=http://yum.zhang.com/epel/6/x86_64/ enable=1 gpgcheck=0 [localextra] name=extra baseurl=http://yum.zhang.com/centos/6/extras/x86_64/ enable=1 gpgcheck=0
示例2:centos7系統yum源配置方法
[root@yum yum.repos.d]# vi localyum.repo [localyum] name=centos7 baseurl=http://yum.zhang.com/centos/7/os/x86_64/ enable=1 gpgcheck=0 [localepel] name=epel baseurl=http://yum.zhang.com/epel/7/x86_64/ enable=1 gpgcheck=0 [localextra] name=extra baseurl=http://yum.zhang.com/centos/7/extras/x86_64/ enable=1 gpgcheck=0
臨時使用自建的yun倉,服務器重啟后失效
yum --enablerepo=localyum --disablerepo=base,extras,updates,epel list
永久使用自建的yum倉,需修改配置文件
vim /etc/yum.repos.d/CentOS-Base.repo # 在每一個啟動的源加上 # enabled=0 #改為1就啟用,沒有此參數也是啟用。 [base] ………… enabled=0 [updates] ………… enabled=0 [extras] ………… enabled=0
#其他開啟的倉庫也是使用此辦法關閉
或使用下面方法,把/etc/yum.repos.d/下面的repo結尾文件,全部移到其他目錄中去
mkdir /home/yum_backup cd /etc/yum.repos.d mv * /home/yum_backup
五、同步公網鏡像
1、企業需求搭建yum倉,有以下幾個方面:
a、在企業實際使用中,如果所有的機器都使用yum安裝,會消耗大量的公網流量,增加成本;也能保證內網服務器安全。
b、在使用相關軟件如PHP、saltstack等,需要從國外的鏡像源下載,速度較慢,影響效率。
c、添加定制的rpm到自建yum倉,能更方便的使用
2、鏡像同步公網yum源
上游yum源必須要支持rsync協議,否則不能使用rsync進行同步。
http://mirrors.ustc.edu.cn/status/
CentOS官方標准源:rsync://mirrors.ustc.edu.cn/centos/
epel源:rsync://mirrors.ustc.edu.cn/epel/
同步命令:
# 使用rsync同步yum源,為了節省帶寬、磁盤和下載時間,只同步了CentOS6的rpm包,這樣所有的rpm包只占用了21G,全部同步需要300G左右。
# 同步base源,小技巧,我們安裝系統的光盤鏡像含有部分rpm包,大概3G,這些就不用重新下載。
創建四個目錄,用於同步公網yum源
mkdir -p /yum/centos/6/os/x86_64/ mkdir -p /yum/centos/6/extras/x86_64/ mkdir -p /yum/centos/6/updates/x86_64/ mkdir -p /yum/epel/6/x86_64/
執行以下命令,同時復制執行(或寫入腳本),就會同步官網yum源到本地
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /yum/centos/6/os/x86_64/ /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /yum/centos/6/extras/x86_64/ /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /yum/centos/6/updates/x86_64/ /usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /yum/epel/6/x86_64/
查看同步完成后yum源的大小相關操作:
#查看同屬數據大小 du -sh /yum/ #查看目錄結構 LANG=en tree -L 2 /yum/
六、常見故障及處理方法
故障1:
Error: @ERROR: max connections (20) reached -- try again later rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6] 解決方法: yum源服務器超過最大連接數,等待一會再進行測試(多嘗試幾次,即可成功,上述同步的yum源默認鏈接數40多個)。
故障2:
Error: # rsync: getaddrinfo: mirrors.ustc.edu.cn 873: Name or service not known 解決方法: DNS無法解析,更換一個DNS再進行測試 常使用的DNS: 114.114.114.114 114.114.115.115 223.5.5.5 223.6.6.6 112.124.47.27 114.215.126.16 8.8.8.8
七、拓展
zabbix源同步:
/usr/bin/rsync -av rsync:http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/ /yum/zabbix/3.0/rhel/6/x86_64/
PHP源同步:
/usr/bin/rsync -av http://repo.webtatic.com/yum/el6/x86_64/ /yum/el6/x86_64/