1. 程式人生 > >自動化部署之搭建yum倉

自動化部署之搭建yum倉

相關操作 ica http bsp logfile 目錄 res arc back

一、導言

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/

自動化部署之搭建yum倉