搭建基於HTTP協議內網yum倉庫


環境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5

1. 前言

如果我們的yum倉庫需要多台機器共同使用,此時把yum倉庫做成本地的,然后一台台scp推送過去比較麻煩,此時可以考慮搭建一個基於HTTP協議,供給內網其它機器使用的本地yum倉庫。

下面的操作步驟以內網管理機器(10.0.0.61)作為rpm包倉庫,在其上安裝nginx,並對外提供HTTP服務,其它機器使用內網管理機器上的rpm包倉庫作為自己的倉庫。

總體操作步驟如下:

  • 在內網管理機器(存放rpm包的機器)准備好rpm包
  • 在管理機器上生成repodata信息
  • 在管理機器上配置nginx並對外提供服務
  • 在管理機器上配置倉庫的repo文件
  • 把管理機器上的repo文件推送給其它機器使用
  • 在其它內網機器上測試使用

2. 把rpm包下載到本地

yum install  --downloadonly --downloaddir=/aspack/ mysql-community-server

看到了嗎,就是如此簡單,上述命令即可把mysql-community-server對應的所有rpm包及其依賴下載到/aspack/目錄里,也就是說yum本地安裝mysql需要的所有文件我們都准備好了。

執行上述命令本機不會安裝mysql,本機初始處於沒有安裝任何mysql相關包的狀態

下圖是我用此方法,下載的一些rpm包:

3. 配置nginx對外提供服務

在管理機器上安裝好nginx並配置如下:

[root@m01 ~]# hostname -I
10.0.0.61 172.16.1.61 
[root@m01 ~]# cat /etc/nginx/conf.d/as4k-http.conf 
# yum repository for other machine over http
server {
    listen       2222;
    server_name  10.0.0.61;

    location / {
        root   /aspack;
        index  index.html;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
    }

}
[root@m01 ~]# nginx -t
[root@m01 ~]# systemctl restart nginx
[root@m01 ~]# netstat -lntp | grep 2222

監控其它端口也一樣,開啟索引功能不是必須的,根目錄一定是rpm包存放的目錄。

4. 配置本地repo文件

[root@m01 ~]# cat /etc/yum.repos.d/as4k-http.repo 
[as4k-http]
name=as4k http repository
baseurl=http://10.0.0.61:2222/
gpgcheck=0
enabled=1

5. 生成repodata信息

createrepo命令默認系統沒有,需要我們額外安裝:

# yum install createrepo -y

安裝完畢之后,直接使用:

# createrepo /aspack/

這時會發現本地倉庫repodata相關信息已經生成完畢:

6. 檢查及使用

首先在本地管理機器上檢查看是否可用。

[root@m01 ~]# yum repoinfo as4k-http
as4k-http                            | 2.9 kB  00:00:00     
as4k-http/primary_db                 |  42 kB  00:00:00     
Repo-id      : as4k-http
Repo-name    : as4k http repository
Repo-status  : enabled
Repo-revision: 1538128513
Repo-updated : Fri Sep 28 17:55:13 2018
Repo-pkgs    : 45
Repo-size    : 215 M
Repo-baseurl : http://10.0.0.61:2222/
Repo-expire  : 21,600 second(s) (last: Mon Oct  1 15:12:22 2018)
Filter     : read-only:present
Repo-filename: /etc/yum.repos.d/as4k-http.repo
repolist: 45

然后再把as4k-http.repo文件推送到其它機器,測試使用情況。

[root@m01 ~]# scp /etc/yum.repos.d/as4k-http.repo \
root@10.0.0.9:/etc/yum.repos.d/
[root@web03 ~]# hostname -I
10.0.0.9 172.16.1.9 
[root@web03 ~]# yum repoinfo as4k-http
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Repo-id      : as4k-http
Repo-name    : as4k http repository
Repo-status  : enabled
Repo-revision: 1538128513
Repo-updated : Fri Sep 28 17:55:13 2018
Repo-pkgs    : 45
Repo-size    : 215 M
Repo-baseurl : http://10.0.0.61:2222/
Repo-expire  : 21,600 second(s) (last: Mon Oct  1 15:17:53 2018)
Filter     : read-only:present
Repo-filename: /etc/yum.repos.d/as4k-http.repo
repolist: 45

在其它機器上安裝軟件測試:

7. 對管理機器上的倉庫進行更新

管理機器倉庫上的rpm包如有增刪,需要在管理機器上重建倉庫索引信息,可按下述步驟操作

  1. 查看舊的軟件包總數 yum repoinfo as4k-http | grep pkgs
  2. 更新本地倉庫 createrepo --update /aspack/
  3. 清除所有緩存 yum clean all
  4. 查看新的軟件包總數 yum repoinfo as4k-http | grep pkgs

如果軟件包的數量增加或減少,說明倉庫更新成功。

有一個很大的問題暫未解決,上述更新操作是在管理機器上執行的,經過測試我發現管理機器上的軟件包如有變動,必須對其它客戶端機器也同樣使用相同的操作更新倉庫索引信息,該問題貌似可以通過添加gpgkey簽名驗證來解決,但本人暫未能解決,可參考的資料如下:

http://www.narrabilis.com/mybook/repo
http://www.ruanyifeng.com/blog/2013/07/gpg.html

參考資料

搭建本地離線yum倉庫
https://www.cnblogs.com/asheng2016/p/local-yum.html

作者: 阿勝4K
出處: https://www.cnblogs.com/asheng2016/p/local-yum-http.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM