Nginx实现统一yum源代理

Nginx实现统一yum源代理

经验文章nimo972025-07-03 1:34:044A+A-

本文主要分享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有两个重点配置文件:

  1. 首先配置主配置文件(/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代理缓存的设置,主要是为了优化一下策略,但其实这一步你不设置也可以。重点的重点是接下来的站点配置文件。

  1. 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;

}

}

请注意!

  1. 站点配置文件目录下的文件内容,请结合实际配置location模块,我这里是作为Centos 7、Rockylinux、Almalinux、OpenEuler、epel共5个模块,如果你是这些版本之一,直接复制我的内容就可以正常使用。
  2. "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源。

  1. 认识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源也可以配置成功,但不确定是否有软件兼容上的问题,建议参考官方相关技术文档。






















点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7