CentOS 7.9 自建 Yum 源服务器搭建指南

适用于内网 CentOS 7.9 环境搭建可用的 Yum 软件源

目 录

一、文档说明与方案概述

[1.1 背景](#1.1 背景)

[1.2 环境假设](#1.2 环境假设)

[1.3 整体架构](#1.3 整体架构)

[二、第一步:切换阿里云 Yum 源](#二、第一步:切换阿里云 Yum 源)

[2.1 操作说明](#2.1 操作说明)

[2.2 创建阿里云 vault 源配置](#2.2 创建阿里云 vault 源配置)

[2.3 禁用失效的默认源](#2.3 禁用失效的默认源)

[2.4 验证源可用](#2.4 验证源可用)

三、第二步:安装所需软件

四、第三步:创建目标目录

[五、第四步:执行 reposync 同步](#五、第四步:执行 reposync 同步)

[5.1 操作说明](#5.1 操作说明)

[5.2 分别同步三个仓库](#5.2 分别同步三个仓库)

[六、第五步:createrepo 重建仓库元数据](#六、第五步:createrepo 重建仓库元数据)

[七、第六步:配置 nginx 提供 HTTP 服务](#七、第六步:配置 nginx 提供 HTTP 服务)

[7.1 编写 nginx 配置](#7.1 编写 nginx 配置)

[7.2 启动并设置开机自启](#7.2 启动并设置开机自启)

[7.3 放行防火墙(如需)](#7.3 放行防火墙(如需))

[7.4 验证本机访问](#7.4 验证本机访问)

八、第七步:客户端配置

[8.1 备份并移除默认源](#8.1 备份并移除默认源)

[8.2 创建本地源配置](#8.2 创建本地源配置)

[8.3 客户端验证](#8.3 客户端验证)

九、第八步(可选):自动化增量同步脚本

十、关键要点回顾

一、文档说明与方案概述

1.1 背景

CentOS 7 已于 2024 年 6 月 30 日正式结束维护(EOL),官方源 mirror.centos.org 随之下线,历史软件包归档至 vault.centos.org(只读、不再更新)。国内阿里云、清华 TUNA、中科大 USTC 等镜像站均提供 centos-vault 归档镜像,可作稳定的同步来源。

本方案采用「方案 B:reposync 按需拉取 + createrepo 重建元数据 + nginx 提供 HTTP 分发」的方式,从阿里云 vault 镜像同步 base、updates、extras 三个基础仓库到内网源服务器,供内网各 CentOS 7.9 客户端使用。相比全量 rsync 镜像(方案 A),本方案占用磁盘小、只保留用得到的软件包,更适合内网规模有限的场景。

1.2 环境假设

|------------|----------------------------------------------|
| 项目 | 说明 |
| 源服务器 | CentOS 7.9,内网 IP 192.168.1.10(按实际环境替换) |
| 同步来源 | 阿里云 mirrors.aliyun.com/centos-vault/7.9.2009 |
| 同步仓库 | base / updates / extras |
| 分发方式 | HTTP(nginx 监听 80 端口) |
| 客户端 | 内网各 CentOS 7.9 机器 |

1.3 整体架构

阿里云 centos-vault 镜像站通过 reposync 定时拉取到内网源服务器 /var/www/html/centos/7 目录,nginx 将该目录以 HTTP 静态服务对外提供;内网客户端将 baseurl 指向源服务器,即可完成软件包安装与更新。

  • 同步方向:阿里云镜像站 → 内网源服务器(reposync)
  • 发布方向:内网源服务器 → 内网客户端(HTTP/nginx)
  • 仓库结构:/var/www/html/centos/7/{base,updates,extras}/

二、第一步:切换阿里云 Yum 源

2.1 操作说明

源服务器本身也是 CentOS 7.9,默认官方源已失效,直接执行 yum 会因无法解析 mirrorlist.centos.org 而报错。因此第一步必须先将源服务器自身的 Yum 源切换为阿里云 vault 源,后续才能正常安装 yum-utils、createrepo、nginx 等工具。

注意:此处创建的仓库 ID 直接命名为 base、updates、extras,与后续 reposync 拉取后的目录名一一对应,这一步的配置同时承担了「源服务器自身安装软件」与「reposync 同步来源」的双重职责。

2.2 创建阿里云 vault 源配置

创建 /etc/yum.repos.d/aliyun-vault.repo,内容如下:

cat > /etc/yum.repos.d/aliyun-vault.repo <<'EOF'

base

name=CentOS-7 - Base (Aliyun Vault)

baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/

enabled=1

gpgcheck=0

updates

name=CentOS-7 - Updates (Aliyun Vault)

baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/

enabled=1

gpgcheck=0

extras

name=CentOS-7 - Extras (Aliyun Vault)

baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/

enabled=1

gpgcheck=0

EOF

说明:CentOS 7 已 EOL,vault 归档的 GPG 校验在内网自建源场景下通常直接关闭(gpgcheck=0)更省事;若需保留校验,可设 gpgcheck=1 并放置对应的 RPM-GPG-KEY-CentOS-7 与 gpgkey 配置。

2.3 禁用失效的默认源

将原有失效的默认源移入备份目录,并恢复刚创建的 aliyun-vault.repo:

mkdir -p /etc/yum.repos.d/backup

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

mv /etc/yum.repos.d/backup/aliyun-vault.repo /etc/yum.repos.d/

2.4 验证源可用

yum clean all && yum makecache

yum repolist

若能正常列出 base、updates、extras 三个仓库且不报错,说明阿里云源切换成功,可进入下一步。

三、第二步:安装所需软件

在源服务器上安装以下三个软件包:

  • yum-utils:提供 reposync 命令(按需拉取仓库)
  • createrepo:生成并维护仓库元数据 repodata
  • nginx:提供 HTTP 静态文件分发服务

yum install -y yum-utils createrepo nginx

四、第三步:创建目标目录

规划仓库存放路径为 /var/www/html/centos/7,该路径即 nginx 的发布根目录:

mkdir -p /var/www/html/centos/7

五、第四步:执行 reposync 同步

5.1 操作说明

reposync 的同步来源即第一步配置的 aliyun-vault.repo。参数说明:-l 表示仅下载每个包的最新版本(显著节省磁盘);--downloadcomps 拉取软件包分组信息;--download-metadata 拉取仓库元数据。

5.2 分别同步三个仓库

cd /var/www/html/centos/7

reposync -p . --repoid=base -l --downloadcomps --download-metadata

reposync -p . --repoid=updates -l --downloadcomps --download-metadata

reposync -p . --repoid=extras -l --downloadcomps --download-metadata

同步完成后,会在 /var/www/html/centos/7 下生成 base、updates、extras 三个目录,每个目录内含 RPM 软件包。

  • base 目录:约 3~5 GB
  • updates 目录:约 2~4 GB
  • extras 目录:较小,几十 MB 至数百 MB

首次同步耗时视网络带宽而定;若磁盘紧张,可仅同步 base 与 updates 两个核心仓库。

六、第五步:createrepo 重建仓库元数据

reposync 只下载了 RPM 软件包,还需要用 createrepo 为每个仓库生成 repodata 索引,客户端才能识别并使用:

createrepo /var/www/html/centos/7/base

createrepo /var/www/html/centos/7/updates

createrepo /var/www/html/centos/7/extras

若后续需要支持 yum groupinstall 分组安装(如桌面环境),可为 base 仓库追加 -g 指定分组文件;基础安装场景可省略。

七、第六步:配置 nginx 提供 HTTP 服务

7.1 编写 nginx 配置

编辑 /etc/nginx/conf.d/yum.conf,内容如下:

cat > /etc/nginx/conf.d/yum.conf <<'EOF'

server {

listen 80;

server_name yum.local;

root /var/www/html/centos;

autoindex on;

charset utf-8;

}

EOF

7.2 启动并设置开机自启

systemctl start nginx

systemctl enable nginx

systemctl status nginx

7.3 放行防火墙(如需)

firewall-cmd --permanent --add-service=http

firewall-cmd --reload

7.4 验证本机访问

curl http://127.0.0.1/7/base/repodata/

若能看到 repodata 目录内容(repomd.xml 等文件),说明 HTTP 服务正常,可进入客户端配置。

八、第七步:客户端配置

8.1 备份并移除默认源

在内网各 CentOS 7.9 客户端上执行:

mkdir -p /etc/yum.repos.d/backup

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

8.2 创建本地源配置

创建 /etc/yum.repos.d/local.repo,将 baseurl 指向内网源服务器(IP 按实际替换):

cat > /etc/yum.repos.d/local.repo <<'EOF'

base

name=Local CentOS-7 Base

baseurl=http://192.168.1.10/7/base/

enabled=1

gpgcheck=0

updates

name=Local CentOS-7 Updates

baseurl=http://192.168.1.10/7/updates/

enabled=1

gpgcheck=0

extras

name=Local CentOS-7 Extras

baseurl=http://192.168.1.10/7/extras/

enabled=1

gpgcheck=0

EOF

8.3 客户端验证

yum clean all && yum makecache

yum repolist

yum -y install nginx

若客户端能正常加载仓库列表并成功安装软件包,说明内网 Yum 源搭建成功。

九、第八步(可选):自动化增量同步脚本

vault 归档基本不再更新,但为保持一致可添加定时任务。创建 /root/sync_yum.sh:

cat > /root/sync_yum.sh <<'EOF'

#!/bin/bash

REPO_DIR=/var/www/html/centos/7

cd $REPO_DIR

for repo in base updates extras; do

reposync -p . --repoid=$repo -l --downloadcomps --download-metadata

createrepo --update $repo

done

EOF

chmod +x /root/sync_yum.sh

加入 crontab,每天凌晨 3 点执行:

echo "0 3 * * * /root/sync_yum.sh > /dev/null 2>&1" >> /var/spool/cron/root

十、关键要点回顾

|------------|---------------------------------------------------------------|
| 要点 | 说明 |
| 路径对应关系 | 客户端 baseurl 中的 7/base 必须与源服务器 reposync 的目录结构一致,是排错的第一检查点 |
| 磁盘估算 | base + updates + extras 全量最新版约 8~12 GB,加 -l 参数后远小于方案 A 的全量归档 |
| EOL 特性 | CentOS 7 已停止维护,内网源同步一次即可长期使用,定时任务仅作保险 |
| HTTP 安全 | 纯内网使用 HTTP 即可;若跨公网,建议在 nginx 增加 auth_basic 鉴权或升级为 HTTPS |

文档至此结束。如部署过程中遇到 reposync 报 GPG 校验错误、客户端 403 等异常,请根据报错信息对照上述步骤排查。

相关推荐
高亦真42 分钟前
今天是学习嵌入式的第34天
linux·学习·算法
cuijiecheng20181 小时前
从 GinormoTime 到 Rocky Linux:25fps LTC 完整搭建与验证实战
linux·运维·服务器
GeW1 小时前
告别盲目刷题!RHCE高效备考路线图,助你一次Pass
linux
H_oRIZoN_2 小时前
Linux入门DAY35(TCP粘包问题与HTTP)
linux·tcp/ip·http
好评1242 小时前
【Linux】传输层协议TCP
linux·网络·tcp/ip
Shell运维手记2 小时前
Linux mdadm 软 RAID + LVM 完整综合笔记
linux·运维·笔记·5g
凤舞飘伶2 小时前
服务器内存满日常运维命令
linux·运维·服务器
Fcy6483 小时前
Linux下 Socket编程 —— TCP网络编程
linux·网络·tcp/ip
IPdodo_3 小时前
静态 IP 访问异常排查:403/429 归因与迁移验收
服务器·网络·数据库·python·网络协议·php·性能测试