问题:离线的生产环境没有yum源可用,或者yum源老旧无法更新 。
思路:在个人电脑安装一个最小化的环境,用yum把包和依赖保存到本地,然后再迁移到内网,在内网利用nginx搭建局域网yum源。
本文以centos7.3为例
一、在本地准备环境安装minimal版本
minimal版本只有必要的软件,自带的软件最少。可以说是最缺依赖的版本了。建议在本地用虚拟机搭建,搭建和网络配置不赘述了,可参考我其他帖子【VMware player安装centos8】【centos7 虚拟机最小化安装后网络配置】
二、保存yum涉及的所有rpm包和依赖
国内换源快速命令:
wget -P /etc/yum.repos.d http://mirrors.163.com/.help/CentOS7-Base-163.repo
修改yum的配置,把yum涉及的所有rpm包都保存下来。
vi /etc/yum.conf,修改keepcache的值为1。也可以修改cachedir,rpm包保存的路径。

三、在生产环境搭建本地yum仓库
创建本地yum仓库需要createrepo命令。
在本地输入sudo yum install createrepo ,我们可以看到大概需要以下几个包。

本地安装完之后,去rpm包缓存路径找到相应的安装包。上传到生产环境同一个目录中,然后批量安装:
rpm -Uvh --force --nodeps *rpm
生产环境有createrepo了命令,就可以创建本地yum仓库了。
使用:createrepo /路径A,可以在路径A创建yum仓库。
在后续使用过程中有包删除、增加、更新,
服务端执行:createrepo --update /路径A,
客户端执行:yum clean all
四、利用nginx搭建http局域网服务端
个人比较喜欢使用docker部署nginx。首先在centos部署docker基础环境【传送门】。
然后,拉取nginx镜像:docker pull nginx:1.19.0(建议要指定版本,方便后续运维,具体版本根据个人喜好)
可以使用docker-compose【docker-compose安装】运行nginx,参考docker-compose.yml如下:
version: '3'
services:
nginx-yum:
restart: always
image: nginx:1.19.0
ports:
- 7080:80
- 7443:443
volumes:
- /app/nginx-yum/conf:/etc/nginx
- /app/ngin-yum/logs:/var/log/nginx
- /app/nginx-yum/html:/usr/share/nginx/html # 注意要把静态文件挂载出来
运行成功后,把静态文件挂载的目录运行createrepo设置为yum仓库。
设置完后可以通过curl命令测试nginx是否正常运行。
五、客户端设置
局域网内的客户端在/etc/yum.repos.d目录下配置自己的repo文件,即可使用服务端。参考:
# yf-yum.repo
#
# email: XXX@qq.com
# version: 1.0
# yfyumaddr: cat /etc/yum/vars/yfyumaddr
#
[yf-base]
name=CentOS-$releasever - Base - yf
baseurl=http://$yfyumaddr/$basearch/$releasever/base
enabled=1
gpgcheck=0
在YUM源配置文件repo中,是支持使用变量的,常用的几个变量:
$releasever:系统版本号(大版本号),如CentOS7.3变量显示为7
$basearch:硬件架构,变量值有”i386″, “x86_64”
除了有这些默认变量外,我们还可以自定义变量。
在/etc/yum/vars/目录下创建文件,在文件中设置变量值即完成了变量的设定。
如创建一个内容是局域网服务器地址的文件yfyumaddr
#cd /etc/yum/vars
#echo 'ipaddr:port' > yfyumaddr
最后配置完之后记得yum search 验证。

432

被折叠的 条评论
为什么被折叠?



