欢迎光临
我们一直在努力

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

项目

说明

源服务器

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

赞(0)
未经允许不得转载:171主机测评 » CentOS 7.9 自建 Yum 源服务器搭建指南
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址