開始之前
YUM(Yellow dog Updater Modified):前身是Yellow dog linux的yellow dog updater修改而來,看名字就知道是怎么回事了
YUM的作用:只要有相對應的yum倉庫,理論上可以自動化安裝任何軟件。
由于yum倉庫很多都是互聯網服務商提供的,例如國內的阿里鏡像站,在下載軟件時候需要訪問互聯網,但是針對沒有互聯網環境時,只能自己搭建yum倉庫。
正文
兩種方案可以解決這種問題,第一種通過代理服務器的方式;第二種就是自建yum倉庫,今天我們提到的就是第二種方案
其實整個搭建過程并不復雜,分為三種方式:
- 掛載鏡像到本地(不支持遠程訪問)
- FTP方式(支持遠程)
- HTTP方式(支持遠程)
掛載鏡像到本地
我這里的環境為vmware workstation,只需要在設置里將下圖中的勾選即可,如果其他虛擬化環境也是如此,物理機需要插入光盤。
掛載鏡像文件至media文件夾(掛在一個空目錄即可),如果對掛載命令不理解的人,請移步百度
mount /dev/cdrom /media
掛載過程
將系統自帶的yum倉庫文件轉移到備份文件夾里
cd /etc/yum.repos.d/
mkdir bak
mv centos* bak/
移動到bak文件夾里
創建本地yum文件,并指向掛載的目錄
cat <<EOF > /etc/yum.repos.d/zabbix.repo
[centos]
name=CentOS
baseurl=file:///media
enabled=1
gpgcheck=0
EOF
測試是否正常
通過yum repolist查看是否OK,再安裝zip服務(由于我是精簡版的,所以很多軟件鏡像里沒有,只有zip)
倉庫正常
碰到這個問題可以導入gpg文件
這里就OK了
HTTP方式
第一種只適合本地化部署,如果需要遠程訪問就需要用HTTP方式。
既然是http,首先安裝web服務(這里可以是Apache、可以是Nginx也可以是基于Python的web,自行選擇),其次安裝yum-utils擴展模塊及createrepo創建鏡像倉庫工具
yum -y install httpd
yum -y install yum-utils createrepo
安裝http服務
安裝擴展工具
創建yum倉庫的文件夾,文件夾自行創建
mkdir /kasar
下載安裝包到創建文件夾
yum -y install --downloadonly --downloaddir=/kasar vim
因為加了參數,所以不安裝
已經下載下來
制作yum倉庫,創建倉庫元數據文件
createrepo /kasar
修改http配置,將根目錄設置為yum倉庫目錄,同時修改權限和所屬者,以及將welcome的文件修改掉(不然訪問首頁就是默認測試頁),并啟動
vi /etc/httpd/conf/httpd.conf
cd /etc/httpd/conf.d/
mv welcome.conf welcome.conf.bak
chown apache:apache /kasar -R
chmod 755 /kasar -R
systemctl start httpd && systemctl enable httpd
修改welcome之前
修改之后
在客戶機使用,同樣屏蔽掉自帶yum倉庫(過程略,查看方式一)
cat <<EOF > /etc/yum.repos.d/kasar.repo
[centos]
name=CentOS
baseurl=http://192.168.17.129
enabled=1
gpgcheck=0
EOF
vim安裝完成
由于只有vim,所以安裝找不到
添加rpm包yum倉庫,并更新
添加telnet
沒更新之前,一定沒有
createrepo --update /kasar
更新本地yum倉庫
此時安裝成功
這一種只能解決當前所需要的包,遠遠滿足不了企業的需求,所以需要將阿里或者其他的down下來,那怎么做呢,以zabbix 阿里鏡像站為例,首先安裝阿里的zabbix倉庫文件
cat <<EOF > /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.2/rhel/8/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/8/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
EOF
curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
查看鏡像倉庫
我們需要將數據包同步到本地,這里的名字就是repo id的前綴
reposync -r zabbix /kasar
創建repo元數據文件
createrepo /kasar/zabbix
客戶端使用,這里需要注意的是IP后需要跟zabbix的目錄,因為元數據文件在zabbix目錄里
cat <<EOF > /etc/yum.repos.d/kasar.repo
[centos]
name=CentOS
baseurl=http://192.168.17.129/zabbix
enabled=1
gpgcheck=0
EOF
安裝完成
整個過程就完成了,ftp過程和http類似,可以舉一反三,如果有疑問的小伙伴歡迎留言哦。
寫在最后
自己本地搭建yum倉庫的好處就是防止用戶訪問外網的時候因為下載一些有問題的安裝包,或者有些yum倉庫在境外,下載非常慢,本地倉庫down下來后就沒這個問題,當然云化時代,很多大廠已經在國內有自己的倉庫,而且比較權威,所以上面的一些顧慮可以消除一大半,至于安全合規性,就看每個企業的要求了,還是那句話適合才是最有效的,技術只能解決一部分問題,剩下的依托管理手段去處理。
附錄
自動更新腳本,對cron不熟悉請移步百度
vim /cron/kasar.sh #編寫同步腳本
reposync -r zabbix -p /kasar -d #刪除本地老舊
reposync -r base -p /kasar/
crontab -e #添加定時任務
0 0 1 * * sh /cron/repository.sh #每月1日0時更新yum倉庫