一、前言
企业内部项目存在大量linux服务器,在安装各类软件的时候需要安装大量的依赖包,项目部署的环境属于内网环境,与Internet网完全隔离,并且访问外网yum源信息安全性无法得到保障,直接在每台linux服务器上配置本地yum源也比较麻烦,而采用直接下载rpm包用rpm命令安装更是费时费力。所以在内网环境下采用配置局域网yum源,实现下载、安装、升级软件包有利于提高软件部署效率、保障软件版本一致性和信息安全性,并且能够解决互联网带宽占用问题、速度问题、不能访问的问题等等。接下来描述整个搭建过程。
二、要求
1、yum源服务器能够定期自动更新自身的包
2、拉取公网的yum源选择麒麟或统信的yum源(可根据需求修改)
3、客户端能够直接使用搭建的yum源,例如yum install cloud-init -y
三、思路
1、使用crontab制定定时任务,完成定期更新本地yum源
2、使用reposync同步公网yum源
3、客户端直接用yum源服务器,只需要修改客户端/etc/yum.repo.d/目录下repo文件。
注:crontab是linux系统自带的定时任务工具无需下载
四、搭建yum源服务器
1、首先关闭防火墙和selinux
systemctl disabled firewalld #永久关闭防火墙
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
2、安装Nginx、createrepo、reposync软件
# 安装nginx作为web服务器,提供http服务。除了nginx外,还可以选择apache。
# nginx相对于apache来说,内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用,是一个轻量级的web服务器。
yum install nginx -y # yum install httpd -y
yum install createrepo -y # yum源仓库的工具,可以用来建立yum仓库
yum install reposync -y
3、查看nginx配置文件
vim /etc/nginx/nginx.conf
注:root指定了文档根目录,对于一个http请求,nginx会查找文档根目录下的文件或文件夹
从以上nginx配置可以看出文档根目录为/usr/share/nginx/html
4、查看nginx服务状态,保证nginx服务正常
systemctl status nginx # 查看服务器状态
systemctl start nginx # 开启nginx服务
systemctl enable nginx # 设置开机自启动
5、建立rpm包存放路径
mkdir -p /usr/share/nginx/html/kylin_repo
6、同步公网yum源
reposync -p /usr/share/nginx/html/kylin_repoc
此时,会将公网yum源的包同步到yum服务器上。(此过程耗时较长)
7、使用createrepo创建本地yum仓库
cd /usr/share/nginx/html/kylin_repo
createrepo ./
#/usr/share/nginx/html/kylin_repoc目录下文件的可读可执行权限需要进行修改,755避免nginx 403 forbidden。
chmod –R 755 /usr/share/nginx/html/
8、使用crontab设置定期更新yum源任务
crontab -e #打开crontab任务编辑
# 计划任务定义的例子:
# .---------------- 分 (0 - 59)
# | .------------- 时 (0 - 23)
# | | .---------- 日 (1 - 31)
# | | | .------- 月 (1 - 12)
# | | | | .---- 星期 (0 - 7) (星期日可为0或7)
# | | | | |
# * * * * * 执行的命令
#-n表示仅下载最新的软件包,-p表示下载包的路径
0 7 * * 7 /usr/bin/reposync -np /usr/share/nginx/html/kylin_repo
到此,yum服务器已经搭建完成。
五、客户端配置
vim /etc/yum.repos.d/kylin.repo
[base]
name=Kylin_Base
baseurl=***.***.***.***/kylin_repo/ #***.***.***.***地址为yum server ip
enabled=1
gpgcheck=0