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、定期联网更新软件包,保证软件包是较新的版本,更新完后继续关闭网络,这样降低安全风险,防止被恶意攻击。
欢迎大家关注我的公众号,将会为大家分享更多优质的内容!
本篇关于内部YUM源同步阿里云YUM源的知识分享完结!感谢你的阅读,如果有错误之处,敬请指出;如果觉得还OK,欢迎点赞 ;收藏 ; 私信;一起学习,一起成长!!