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 等异常,请根据报错信息对照上述步骤排查。

相关推荐
阳光九叶草LXGZXJ17 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
奔跑的大白啊18 小时前
多容器共享目录权限踩坑记
linux·ubuntu·共享目录·linux权限·docker 容器化部署
正在走向自律20 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
OnlineProxy20 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
Android系统攻城狮21 小时前
Linux Gstreamer深度解析之gst_audio_encoder_set_frame_max调用流程与实战(六十一)
android·linux·运维·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
H.莓飛21 小时前
【C++】命名空间、缺省参数、函数重载与引用
linux·开发语言·c++·visual studio
91刘仁德21 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
辻弋20121 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
硅基手札1 天前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
沫璃染墨1 天前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式