目录
- 1. 前言
- 2. 把rpm包下载到本地
- 3. 配置nginx对外提供服务
- 4. 配置本地repo文件
- 5. 生成repodata信息
- 6. 检查及使用
- 7. 对管理机器上的仓库进行更新
- 参考资料
环境: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 -I10.0.0.61 172.16.1.61 [root@m01 ~]# cat /etc/nginx/conf.d/as4k-http.conf # yum repository for other machine over httpserver { ???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 repositorybaseurl=http://10.0.0.61:2222/gpgcheck=0enabled=1
5. 生成repodata信息
createrepo命令默认系统没有,需要我们额外安装:
# yum install createrepo -y
安装完毕之后,直接使用:
# createrepo /aspack/
这时会发现本地仓库repodata相关信息已经生成完毕:
6. 检查及使用
首先在本地管理机器上检查看是否可用。
[root@m01 ~]# yum repoinfo as4k-httpas4k-http ???????????????????????????| 2.9 kB ?00:00:00 ????as4k-http/primary_db ????????????????| ?42 kB ?00:00:00 ????Repo-id ?????: as4k-httpRepo-name ???: as4k http repositoryRepo-status ?: enabledRepo-revision: 1538128513Repo-updated : Fri Sep 28 17:55:13 2018Repo-pkgs ???: 45Repo-size ???: 215 MRepo-baseurl : http://10.0.0.61:2222/Repo-expire ?: 21,600 second(s) (last: Mon Oct ?1 15:12:22 2018)Filter ????: read-only:presentRepo-filename: /etc/yum.repos.d/as4k-http.reporepolist: 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 -I10.0.0.9 172.16.1.9 [root@web03 ~]# yum repoinfo as4k-httpLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfileRepo-id ?????: as4k-httpRepo-name ???: as4k http repositoryRepo-status ?: enabledRepo-revision: 1538128513Repo-updated : Fri Sep 28 17:55:13 2018Repo-pkgs ???: 45Repo-size ???: 215 MRepo-baseurl : http://10.0.0.61:2222/Repo-expire ?: 21,600 second(s) (last: Mon Oct ?1 15:17:53 2018)Filter ????: read-only:presentRepo-filename: /etc/yum.repos.d/as4k-http.reporepolist: 45
在其它机器上安装软件测试:
7. 对管理机器上的仓库进行更新
管理机器仓库上的rpm包如有增删,需要在管理机器上重建仓库索引信息,可按下述步骤操作
- 查看旧的软件包总数
yum repoinfo as4k-http | grep pkgs
- 更新本地仓库
createrepo --update /aspack/
- 清除所有缓存
yum clean all
- 查看新的软件包总数
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
搭建基于HTTP协议内网yum仓库
原文地址:https://www.cnblogs.com/asheng2016/p/local-yum-http.html