搭建yum源服务器时,如何配置本地与远程仓库?
- 云服务器
- 2025-12-11
- 6
搭建 yum 源服务器是企业级 Linux 系统管理中常用的操作,主要用于解决内网环境下服务器无法直接连接公网 yum 源的问题,同时可提高软件包的下载速度、实现离线安装和统一管理,以下以 CentOS 7 系统为例,详细讲解 yum 源服务器的搭建过程,包括环境准备、软件安装、配置文件修改、同步公网软件包及客户端使用等步骤。
环境准备
首先需要一台可连接公网的 Linux 服务器作为 yum 源服务器,建议配置较大的磁盘空间(至少 100GB 以上,具体根据需求调整),用于存储软件包,本文以 CentOS 7 系统为例,服务器 IP 地址为 192.168.1.100,操作系统版本为 CentOS 7.9 x86_64,确保服务器已安装基础组件,执行以下命令更新系统并安装必要工具:
yum update y yum install y wget createrepo rsync
createrepo 用于创建 yum 仓库的元数据,rsync 用于同步公网 yum 源的软件包。
安装并配置 HTTP 服务
yum 源服务器通常通过 HTTP 协议提供服务,可使用 Apache 或 Nginx,此处以 Apache 为例,安装并启动服务:
yum install y httpd systemctl start httpd systemctl enable httpd
创建用于存放软件包的目录,/var/www/html/centos/7,并设置目录权限:
mkdir p /var/www/html/centos/7 chmod R 755 /var/www/html/centos/7 chown R apache:apache /var/www/html/centos/7
通过浏览器访问 http://192.168.1.100/centos/7 应能看到目录为空(后续同步软件包后此处将显示文件)。
同步公网 yum 源软件包
选择同步源
根据需求选择官方或第三方 yum 源,CentOS 官方源、阿里云源、EPEL 源等,以阿里云 CentOS 7 源和 EPEL 源为例:

- CentOS 7 官方源:http://mirrors.aliyun.com/centos/7/os/x86_64/
- EPEL 源:http://mirrors.aliyun.com/epel/7/x86_64/
使用 rsync 同步软件包
分别同步两个源的软件包到本地目录:
# 同步 CentOS 7 官方源软件包 rsync avz delete exclude="isos/" exclude="debuginfo/" rsync://mirrors.aliyun.com/centos/7/os/x86_64/ /var/www/html/centos/7/os/ # 同步 EPEL 源软件包 rsync avz delete rsync://mirrors.aliyun.com/epel/7/x86_64/ /var/www/html/centos/7/epel/
参数说明:a 归档模式,v 显示详细过程,z 压缩传输,delete 删除目标目录中多余的文件,exclude 排除不需要的目录(如镜像文件、调试信息等)。
创建 yum 仓库元数据
使用 createrepo 工具为同步的软件包创建元数据,执行以下命令:
cd /var/www/html/centos/7/os/ createrepo pdo . . cd /var/www/html/centos/7/epel/ createrepo pdo . .
执行后,目录下会生成 repodata 文件夹,包含软件包的依赖关系信息。
配置 yum 源服务器本地仓库
为方便服务器自身使用本地 yum 源,可修改本地 yum 配置文件,备份原始配置文件并创建新的本地源配置:

enabled=1 表示启用该源,gpgcheck=0 表示不检查 GPG 密钥(生产环境建议开启并导入密钥),执行 yum clean all 和 yum makecache 刷新缓存后,即可使用本地源安装软件。
客户端配置 yum 源
在内网其他客户端服务器上,需修改 yum 配置文件以指向本地 yum 源服务器,以客户端 IP 为 192.168.1.200 为例:
# 备份客户端原始配置 mv /etc/yum.repos.d/CentOSBase.repo /etc/yum.repos.d/CentOSBase.repo.bak # 创建指向本地源的配置 cat > /etc/yum.repos.d/local.repo << EOF [localbase] name=CentOS7 Local Base Repository baseurl=http://192.168.1.100/centos/7/os/ enabled=1 gpgcheck=0 [localepel] name=CentOS7 Local EPEL Repository baseurl=http://192.168.1.100/centos/7/epel/ enabled=1 gpgcheck=0 EOF
同样执行 yum clean all 和 yum makecache 后,客户端即可通过本地 yum 源安装软件。
yum 源服务器维护与管理
-
定期同步软件包:公网 yum 源的软件包会更新,建议设置定时任务(如 crontab)定期同步,例如每天凌晨 2 点同步:
同步后需重新创建元数据。

-
清理旧软件包:当磁盘空间不足时,可删除不再需要的旧版本软件包,但需确保依赖关系不受影响。
-
备份元数据:定期备份 repodata 目录,避免因元数据损坏导致 yum 源不可用。
- 选择更快的镜像源:优先选择地理位置较近或网络延迟低的镜像源(如教育网、企业内部镜像源)。
- 使用多线程工具:如 axel 或 lftp 替代 rsync 进行多线程下载, yum install y axel axel n 10 o /tmp/centos7_os.iso http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/centosrelease79.2009.1.el7.centos.x86_64.rpm
- 配置代理:若服务器需通过代理访问公网,可在 ~/.bashrc 中设置代理环境变量,或使用 proxy 参数指定代理服务器。
- 增加带宽:确保服务器出口带宽充足,避免因带宽限制导致同步速度慢。
- 服务器端验证:在 yum 源服务器上执行 yum list,检查是否能正常列出软件包,并确认本地源已启用(如显示 localbase 和 localepel 源)。
- 客户端验证:在客户端服务器上执行 yum install y wget(安装一个未安装过的软件包),观察是否能从本地源下载并安装,若出现“Complete!”提示则表示成功。
- 浏览器访问验证:通过浏览器访问 http://192.168.1.100/centos/7/os/repodata/,确认能正常打开 repodata 目录下的元数据文件(如 repomd.xml)。
- 日志检查:若客户端无法连接,可查看 Apache 错误日志(/var/log/httpd/error_log)和客户端 yum 日志(/var/log/yum.log),定位具体问题(如网络不通、路径错误等)。
常见软件包目录结构说明
为方便管理,可对软件包按类型或用途分类存储,以下是常见目录结构示例:
| 目录名称 | 用途说明 |
|---|---|
| /var/www/html/centos/7/os/ | CentOS 7 官方基础源软件包,包含系统核心组件、基础工具等 |
| /var/www/html/centos/7/epel/ | EPEL(Extra Packages for Enterprise Linux)扩展源,提供额外软件包 |
| /var/www/html/centos/7/extras/ | CentOS 7 extras 源,包含一些附加软件包(如 firmware) |
| /var/www/html/centos/7/updates/ | CentOS 7 更新源,包含安全更新和 Bug 修复补丁 |
如需添加其他源(如 Docker、Nginx 官方源),可创建新目录(如 /var/www/html/centos/7/docker/)并同步对应软件包,然后创建元数据并在客户端配置文件中添加对应条目。
相关问答 FAQs
问题 1:搭建 yum 源服务器时,如何解决同步公网源时速度慢的问题?
解答:若同步公网源速度较慢,可采取以下优化措施:
问题 2:如何验证 yum 源服务器是否搭建成功?
解答:可通过以下步骤验证 yum 源服务器是否正常工作: