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

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

目 录

一、文档说明与方案概述

1.1 背景

1.2 环境假设

1.3 整体架构

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

2.1 操作说明

2.2 创建阿里云 vault 源配置

2.3 禁用失效的默认源

2.4 验证源可用

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

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

五、第四步:执行 reposync 同步

5.1 操作说明

5.2 分别同步三个仓库

六、第五步:createrepo 重建仓库元数据 试用高效软件

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

7.1 编写 nginx 配置

7.2 启动并设置开机自启

7.3 放行防火墙(如需)

7.4 验证本机访问

八、第七步:客户端配置

8.1 备份并移除默认源

8.2 创建本地源配置

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 环境假设

1.3 整体架构

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

  • 同步方向:阿里云镜像站 → 内网源服务器(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/ 部署Linux服务器

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 部署Linux服务器

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

十、关键要点回顾

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

相关推荐
赋创小助手2 小时前
Qwen3.8-27B 本地推理 Benchmark 解析:llama.cpp、vLLM、SGLang 与长 Context 的性能差异
服务器·人工智能·大模型·qwen·vllm·sglang·context长度
fanxiaohui121382 小时前
2026符合上飞机标准的充电宝推荐南孚传应,质量稳定又安全
运维·服务器·人工智能·科技
国际云,接待2 小时前
云服务器跨厂商迁移怎么尽量不停机:用 rsync、MySQL binlog 和 DNS TTL 做双阶段切换
运维·服务器·mysql
Doris__HE2 小时前
【元脑服务器NF8260G7-NF8260M7技术规格分享】
运维·服务器·网络·数据库·性能优化
济南凡维3 小时前
Zebra Designer3试用文档
服务器·网络·zebra·打印机·斑马打印机
吴声子夜歌3 小时前
Shell编程实例——脚本编程的附加特性
linux·运维·shell
yunwei373 小时前
eBPF 教程:BPF 调度器入门
linux·后端·性能优化
Wang's Blog3 小时前
Java 服务器: Linux-MySQL的rpm安装与初始化配置
java·服务器
小小的木头人3 小时前
CentOS 7 下 Nginx 访问自定义目录报 403 的完整排查:从端口权限到 SELinux
nginx·centos