自動化部署之搭建yum倉

1、導言

YUM主要用於自動安裝、升級rpm軟件包,它能自動查找並解決rpm包之間的依賴關係。要成功的使用YUM工具安裝更新軟件或系統,就須要有一個包含各類rpm軟件包的repository(軟件倉庫),這個軟件倉庫咱們習慣稱爲yum源。網絡上有大量的yum源,但因爲受到網絡環境的限制,致使軟件安裝耗時過長甚至失敗。特別是當有大量服務器大量軟件包須要安裝時,緩慢的進度條使人難以忍受。所以咱們在優化系統時,都會更換國內的源。html

相比較而言,本地YUM源服務器最大優勢是局域網的快速網絡鏈接和穩定性。有了局域網中的YUM源服務器,即使在Internet鏈接中斷的狀況下,也不會影響其餘YUM客戶端的軟件安裝和升級。python

2、搭建流程

一、準備一臺服務器作yum倉nginx

主機IP:10.0.0.71web

操做系統:centos 6.9_x_86_64apache

二、建立yum倉目錄vim

mkdir -p /yum/centos6.9/x86_64/
cd /yum/centos6.9/x86_64/

三、安裝createrepo軟件windows

yum -y install createrepo

四、初始化repodata索引文件centos

createrepo -pdo /yum/centos6.9/x86_64/ /yum/centos6.9/x86_64/

五、提供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)便可查看

五、添加新的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

3、安裝apache軟件提供yum服務

一、安裝apache服務

yum install -y httpd
/etc/init.d/http start

#檢查服務器是否正常啓動
netstart -lntup | grep httpd

二、解析綁定域名

#centos系統操做
echo 「10.0.0.71 yum.zhang.com」  >>/etc/hosts

#windows操做
在hosts文件中添加
10.0.0.71 yum.zhang.com

三、訪問網站

在瀏覽器中輸入:yum.zhang.com

四、修改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

五、在瀏覽器輸入yum.zhang.com測試訪問

 

 4、配置客戶端

示例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

5、同步公網鏡像

一、企業需求搭建yum倉,有如下幾個方面:

 a、在企業實際使用中,若是全部的機器都使用yum安裝,會消耗大量的公網流量,增長成本;也能保證內網服務器安全。

 b、在使用相關軟件如PHP、saltstack等,須要從國外的鏡像源下載,速度較慢,影響效率。

 c、添加定製的rpm到自建yum倉,能更方便的使用

二、鏡像同步公網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/

6、常見故障及處理方法

故障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

7、拓展

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/
相關文章
相關標籤/搜索