首页 Linux

内部YUM源服务器同步阿里云YUM源

2024-11-29 16:54

1 同步外网YUM源概述

上一篇文章讲解了如何使用iso光盘镜像在局域网内通过HTTP构建统一YUM源服务器。如果对于软件版本要求不是很高的或对网络限制很严格的,就很适合使用光盘镜像做YUM源,可以投入生产环境使用了。

但是,在企业实际应用场景中,仅仅靠光盘里面的RPM软件包是不能满足需要,我们可以把外网的YUM源中的所有软件包同步至本地,可以完善本地 YUM源的软件包数量及完整性。

获取外网 YUM源软件常见方法包括 Rsync、Wget、Reposync,三种同步方法的区别:Rsync方式需要外网YUM源支持;RSYNC协议,Wget可以直接获取,而 Reposync可以同步几乎所有的 YUM源,下面以 Reporsync为例,同步阿里云YUM源软件至本地服务器。

2 服务器端构建YUM源操作步骤

2.1 准备环境

本次操作使用CentOS7.9操作系统,服务器端需要有网,客户端无需联网,模拟内网服务器

角色                     操作系统            IP地址

服务器端(有网)    CentOS 7.9      10.10.10.100

客户端(无网)       CentOS 7.9      10.10.10.101

2.2 添加阿里云YUM源

(1)备份原有repo文件

[root@localhost ~]# mkdir /etc/yum.repos.d/backup

[root@localhost ~]# mv  /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup

(2)添加阿里云yum源

[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 清除缓存并重新生成缓存

[root@localhost ~]# yum clean all 

[root@localhost ~]# yum makecache

备注:

Centos-7.repo是软件仓库配置文件,epel-7.repo是扩展源、提供额外的软件包

2.3 安装相关软件

[root@localhost ~]# yum install -y httpd yum-utils createrepo 

相关软件说明: 

yum-utils:yum-utils是yum的工具包集合,如果不安装,无法reposync这个同步工具。 

createrepo:createrepo是一个对rpm文件进行索引建立的工具,就是对指定目录下的rpm文件进行检索,把每个rpm文件的信息存储到指定的索引文件中,这样方便远程yum命令在安装更新时进行检索。 

httpd:在YUM服务器上创建一个简单的HTTP服务,通过Apache软件提供web服务,也可以使用nginx。

2.4 创建repodata目录

[root@localhost ~]# mkdir /var/www/html/centos

说明:

该目录可以自定义,如果不是放置在httpd服务的默认发布目录下,需要将httpd.conf文件中“DocummenRoot”修改成你自定义的目录

2.5 同步阿里云yum源软件包到repodata目录

[root@localhost ~]# reposync -n --repoid=extras --repoid=updates --repoid=base --repoid=epel -p /var/www/html/centos/

......

(1764/1766): zlib-static-1.2.7-21.el7_9.i686.rpm            |  58 kB  00:00:00     

(1765/1766): zlib-static-1.2.7-21.el7_9.x86_64.rpm        |  58 kB  00:00:00     

(1766/1766): zenity-3.28.1-2.el7_9.x86_64.rpm             | 4.0 MB  00:00:01 

需要耐心等待:由于同步的软件包有一万多个,需要的时间相对较长,我用了半小时,配置高一点的服务器会快一些。

参数说明:

-n    指下载最新软件包 

-p     指定目录,指定本地的源 

--repoid    指定要查询的repo id,可以指定多个(如果不指定就同步本地服务器所有的源)

次数

查看同步结果

[root@localhost ~]# du -sh /var/www/html/centos/*

9.0G   /var/www/html/centos/base

16G   /var/www/html/centos/epel

323M   /var/www/html/centos/extras

3.4G   /var/www/html/centos/updates

2.6 运行createrepo来创建仓库索引

[root@localhost ~]# createrepo /var/www/html/centos/base

[root@localhost ~]# createrepo /var/www/html/centos/epel

[root@localhost ~]# createrepo /var/www/html/centos/extras

[root@localhost ~]# createrepo /var/www/html/centos/updates

2.7 更新数据源

[root@localhost ~]# createrepo --update /var/www/html/centos/base

[root@localhost ~]# createrepo --update /var/www/html/centos/epel

[root@localhost ~]# createrepo --update /var/www/html/centos/extras

[root@localhost ~]# createrepo --update /var/www/html/centos/updates

首次搭建可以不用更新数据源,主要用于后期阿里云YUM源可能有些软件包更新了,需要执行update更新到最新的软件版本。

2.8 制作repo文件

该步骤主要是方便客户端直接快速获取已经做好的repo文件,也可以不做。

[root@localhost ~]# mkdir -p /var/www/html/repos/ 

[root@localhost ~]#  cat >> /var/www/html/repos/CentOS.repo << EOF

[base]

name=CentOS-Base

failovermethod=priority

baseurl=http://10.10.10.100/centos/base/

enable=1

gpgcheck=0

[epel]

name=CentOS-Epel

failovermethod=priority

baseurl=http://10.10.10.100/centos/epel/

enable=1

gpgcheck=0

[extras]

name=CentOS-Extras

failovermethod=priority

baseurl=http://10.10.10.100/centos/extras/

enable=1

gpgcheck=0

[updates]

name=CentOS-Updates 

failovermethod=priority

baseurl=http://10.10.10.100/centos/updates/

enable=1

gpgcheck=0

EOF

2.9 启动HTTP服务

(1)启动httpd服务

# 启动HTTP并设置开机自启动

[root@localhost ~]# systemctl enable --now httpd

# 查看httpd状态

[root@localhost ~]# systemctl status httpd

(2)关闭防火墙和Selinux

# 关闭防火墙

[root@localhost ~]# systemctl disable --now firewalld

# 或者开启Apache特点端口,Apache使用的是80端口

[root@localhost ~]# firewall-cmd --add-port=80/tcp --per

[root@localhost ~]# firewall-cmd --reload

# 关闭Selinux

[root@localhost ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

# 临时关闭SeLinux

[root@localhost ~]# setenforce 0

3 客户端使用yum源

3.1 备份原有repo文件

[root@localhost ~]# mkdir /etc/yum.repos.d/backup

[root@localhost ~]# mv  /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup

3.2 获取yum源的两种方法

方法一:直接wget或curl已经在服务器端做好的repo文件

# curl方式

[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS.repo http://10.10.10.100/repos/CentOS.repo

# wget方式

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# wget http://10.10.10.100/repos/CentOS.repo

# 任选一种即可

方法二:在客户端创建新的repo文件

[root@localhost ~]# cat >> /etc/yum.repos.d/CentOS.repo << EOF

[base]

name=CentOS-Base 

failovermethod=priority

baseurl=http://10.10.10.100/base/

enable=1

gpgcheck=0

[epel]

name=CentOS-Epel

failovermethod=priority

baseurl=http://10.10.10.100/epel/

enable=1

gpgcheck=0

[extras]

name=CentOS-Extras

failovermethod=priority

baseurl=http://10.10.10.100/extras/

enable=1

gpgcheck=0

[updates]

name=CentOS-Updates 

failovermethod=priority

baseurl=http://10.10.10.100/updates/

enable=1

gpgcheck=0

EOF

日常工作中建议使用方法一,更简单快捷,前提是服务器端已经做好了repo文件

3.3 检查YUM仓库并测试

# 检查yum仓库

[root@localhost ~]#yum repolist

Loaded plugins: fastestmirror, langpacks

Determining fastest mirrors

base                                     | 2.9 kB  00:00:00     

epel                                      | 2.9 kB  00:00:00     

extras                                   | 2.9 kB  00:00:00     

updates                                 | 2.9 kB  00:00:00     

(1/4): extras/primary_db                | 136 kB  00:00:00     

(2/4): base/primary_db                  | 6.1 MB  00:00:00     

(3/4): epel/primary_db                   | 6.9 MB  00:00:00     

(4/4): updates/primary_db              | 2.1 MB  00:00:00     

repo id                                repo name             status

base                                   CentOS-Base           10,072

epel                                    CentOS-Epel           13,790

extras                                 CentOS-Extras          278

updates                              CentOS-Updates        1,766

# 上面可以看到yum仓库信息说明已经设置成功了

# 安装软件包

[root@localhost ~]#  yum install -y telnet 

成功安装就代表内部yum源已经做成功了。

局域网内其他服务器也可以通过wget直接获取或配置repo文件来构建更加完整的yum源。

外网源使用技巧:

1、创建时需要连接互联网,创建完成后关闭互联网,不影响已做成yum源仓库使用;

2、定期联网更新软件包,保证软件包是较新的版本,更新完后继续关闭网络,这样降低安全风险,防止被恶意攻击。

返回首页
返回顶部