Nginx实现统一yum源代理
本文主要分享RHEL(红帽系列)及其衍生版本的Linux系统yum源代理的部署案例和方法,yum源代理服务器可以实现Centos 7、Rockylinux、Almalinux、OpenEuler这4个版本的yum源代理,供网内的服务器系统在不具备访问外网的条件下实现外网yum源安装软件。
环境介绍
1. yum源代理服务器一台(Centos 7系统),需要安装nginx服务实现yum源代理功能。
2. Centos 7、Rockylinux、Almalinux、OpenEuler各一台,这4台服务器无法访问外网,需要通过yum源代理服务器才能实现外网yum源安装。
3. 因为yum是web方式,我的yum代理服务器将启用80端口作为内网服务器的yum源代理端口。
4.外网yum源使用阿里云的yum源
yum源代理服务器安装
yum源代理服务器的操作系统是Centos 7,需要安装Nginx软件,方法如下:
首先安装epel仓库(因为Nginx 不在默认的 CentOS 仓库中)
yum install epel-release
其次安装Nginx
yum install nginx
到此完成了Nginx软件安装,安装完毕后会自动创建nginx用户和组
备注:1. 采用哪种系统安装nginx作为web服务器无所谓,你可以自行选择,我这里只是举例使用Centos 7.
2. 代理服务也可以采用apache httpd,不在本文范围内。
创建一个目录用于缓存yum代理数据,我这里就随便在/var目录下创建proxy目录,同时将proxy目录属主变更为nginx用户和组:
mkdir -p /var/proxy #创建yum缓存目录(请根据实际指定)
chown -R nginx:nginx /var/proxy/ # 修改该 /var/proxy/ 的属主为nginx用户和组
ll /var/| grep proxy # 查看目录属性
Nginx配置
在Nginx软件安装完毕后,接下来的核心重点就是Nginx的配置了,Nginx有两个重点配置文件:
- 首先配置主配置文件(/etc/nginx/nginx.conf)
其实在我们场景中,nginx.conf这个文件配置不多,主要是添加以下语句:
将“proxy_cache_path /var/proxy levels=1:2 keys_zone=yum_cache:10m inactive=7d use_temp_path=off max_size=20g;”添加到nginx.conf文件中的http{ }中,其他的内容保持默认就行。
配置文件中proxy_cache_path解读:
proxy_cache_path #制定缓存指令
/var/proxy #缓存目录
levels=1:2 #定义缓存目录的层级结构,这里定义2级
keys_zone=yum_cache:10m #定义共享内存大小10MB,仅存储键和元数据,而非缓存内容本身
inactive=7d # 定义缓存过期时间,这里是7天
use_temp_path=off #禁用临时路径,提高性能
max_size=20g #设置缓存总大小的上限为 20GB
请注意,以上这一步设置nginx.conf主配置文件,是关于设置yum代理缓存的设置,主要是为了优化一下策略,但其实这一步你不设置也可以。重点的重点是接下来的站点配置文件。
- Nginx站点配置文件( /etc/nginx/conf.d/,确切说是目录下的文件)配置内容
/etc/nginx/conf.d/all.conf 配置文件解读(文件名称随意命名):
server { #定义服务
listen 80; # 定义监听端口80(请结合实际定义,我这里定义80端口)
server_name _; # 匹配域名,请结合实际配置。我这里使用_ 是通配符,即任何访问该服务器的请求都会进入此配置块
location /almalinux/ { # 当请求路径以 /almalinux/ 开头时执行此模块
proxy_pass
https://mirrors.aliyun.com/almalinux/; #将请求代理到阿里云的 AlmaLinux 镜像站
proxy_cache yum_cache; #启用缓存,并使用之前在主配置文件/etc/nginx/nginx.conf文件定义的 yum_cache 缓存区域(在 proxy_cache_path 中配置的共享内存和存储路径)。
proxy_cache_valid 200 302 7d; #对 HTTP 状态码为 200(成功)和 302(临时重定向)的响应缓存 7 天
proxy_cache_valid 404 1d; # 对 HTTP 404(未找到)的响应缓存 1 天
}
####其他linux版本代理配置如下(参数说明请参考以上内容):
location /rockylinux/ {
proxy_pass https://mirrors.aliyun.com/rockylinux/;
proxy_cache yum_cache;
proxy_cache_valid 200 302 7d;
proxy_cache_valid 404 1d;
}
location /centos/ {
proxy_pass https://mirrors.aliyun.com/centos/;
proxy_cache yum_cache;
proxy_cache_valid 200 302 7d;
proxy_cache_valid 404 1d;
}
location /epel/ {
proxy_pass https://mirrors.aliyun.com/epel/;
proxy_cache yum_cache;
proxy_cache_valid 200 302 7d;
proxy_cache_valid 404 1d;
}
location /openeuler/ {
proxy_pass https://mirrors.aliyun.com/openeuler/;
proxy_cache yum_cache;
proxy_cache_valid 200 302 7d;
proxy_cache_valid 404 1d;
}
}
请注意!
- 站点配置文件目录下的文件内容,请结合实际配置location模块,我这里是作为Centos 7、Rockylinux、Almalinux、OpenEuler、epel共5个模块,如果你是这些版本之一,直接复制我的内容就可以正常使用。
- "proxy_pass" 这个参数的值url是需要根据阿里云yum源的路径配置的,下面会提到。如果你选择的是清华大学、网易等yum源需要结合情况配置。
以上配置文件完成后,接下来就可以启动Nginx服务了。
nginx -t #检查nginx配置文件语法
systemctl start nginx.service # 启动nginx服务
systemctl status nginx.service # 查看nginx服务运行状态
查看服务端口情况
ss -antlp. #查看操作系统的端口情况
yum客户端配置
通过以上的步骤,我们完成了采用Centos 7+nginx的yum源代理服务端配置,接下来要分别对Centos 7、Rockylinux、Almalinux、OpenEuler这4个yum客户端进行配置(非常重要)。
请注意!因为每个版本的yum配置文件内容很多,我就不全部复制出来了,重点分享针对每个版本,如何选择和配置yum源。
- 认识yum配置文件所在目录
几乎使用yum源的linux版本的yum配置文件都在/etc/yum.repos.d这个目录下。操作系统安装好后,默认都会在此目录下生成以.repo为后缀的配置文件。
比如Centos 7,就会生成CentOS-Base.repo的文件,其他的版本配置文件名称会不一样,请结合实际,文件名称可以随便命名。
2. 各版本的yum源选择和配置
本文分享的是使用阿里云的yum源,我们可以先访问阿里云yum源界面:
- 比如我们选择“ centos”
再进入下载地址链接
到此我们通过访问阿里云的yum网站页面,知道Centos版本的镜像地址是:
https://mirrors.aliyun.com/centos/
请注意!结合以上内容中的Nginx主配置文件
/etc/nginx/conf.d/all.conf里关于centos的代理url是一样的,配置依据就在这里。
我们再选择对应版本号,我这里是Centos 7,所以选择“7”
那么 Centos 7的yum客户端配置文件,可以按以下内容配置:
请注意!baseurl中的 “ $releasever”表示linux版本号的变量,你也可以写具体数字,比如“7”表示版本7,“8”表示版本8;重点是“172.18.5.225”是我的yum代理服务器的内网地址(请结合实际配置代理服务器的IP即可)。
因为配置文件内容太长,以下其他版本的配置文件我就直接上文件内容,不发截图了。
- Rockylinux (修改IP为你的代理服务器即可)
[baseos]
name=Rocky Linux $releasever - BaseOS
baseurl=http://172.18.5.225/rockylinux/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
countme=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
- Almalinux (修改IP为你的代理服务器即可)
[baseos]
name=AlmaLinux-$releasever - BaseOS
baseurl=http://172.18.5.225/almalinux/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://172.18.5.225/almalinux/RPM-GPG-KEY-AlmaLinux
- OpenEuler (修改IP为你的代理服务器即可)
[OS]
name=OS
baseurl=http://172.18.5.225/openeuler/openEuler-$releasever/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://172.18.5.225/openeuler/openEuler-$releasever/OS/$basearch/RPM-GPG-KEY-openEuler
这里我再介绍下OpenEuler的baseurl是怎么来的
还是在
https://developer.aliyun.com/mirror/这个页面,选择euler
选择openeuler连接
因此,我们配置OpenEuler 的baseurl为:
baseurl=http://172.18.5.225/openeuler/openEuler-$releasever/OS/$basearch/
其中标黄的路径就是参考阿里云openeuler页面的路径,页面里都是“openEuler-*”这一格式,所以配合“$releasever”这个变量,就可以自动选择你的openeuler系统版本了。
- EPEL源
EPEL源主要是RHEL系列系统的,因此在Centos、Almalinux、Rockylinux上均可配置同样的路径:
[epel]
name=Extra Packages for Enterprise Linux 9 - $basearch
baseurl=http://172.18.5.225/epel/$releasever/Everything/$basearch
enabled=1
gpgcheck=1
countme=1
gpgkey=http://172.18.5.225/epel/RPM-GPG-KEY-EPEL-$releasever
以上分享了Centos 7、Rockylinux、Almalinux、OpenEuler客户端yum源的配置文件配置,接着需要进行yum源元数据重新加载:
dnf/yum clean all # 清楚yum缓存
dnf/yum make cache # 重新建立yum元数据
总结
本文主要分享通过部署Nginx作为web服务端,实现代理内网linux主机进行外网yum源软件的安装。这种代理yum源的方式,适合内网linux主机不能访问外网但又需要通过yum安装外网yum源软件包的场景。如果你的主机可以直接访问外网、软件包采用rpm包安装、源代码安装就不适合这种场景。
代理yum服务器的安装并不复杂,核心重点是在yum源的选择以及结合选择的yum源“baseurl”路径进行配置文件内容配置。
最后说下EPEL源,如果你也使用的是阿里云yum源,Centos 7、Rockylinux、Almalinux可以使用以上文中介绍的EPEL配置baseurl的路径,而OpenEuler因为不是RHEL的衍生版本,我使用版本号为“9”的EPEL源也可以配置成功,但不确定是否有软件兼容上的问题,建议参考官方相关技术文档。