准备环境
服务器:Centos7.9
IP地址:192.168.21.92
一、配置自身镜像源并安装工具
# 下载阿里镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 下载阿里epel源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 删除缓存、更新缓存
yum clean all && yum makecache
# 查看镜像源列表
yum repolist
# 安装同步工具、repo制作工具
yum install -y yum-utils createrepo wget
二、通过reposync制作镜像仓库
分别制作base仓库、extras仓库、updates仓库、epel仓库
创建目录
mkdir -p /data/repos_local/centos/7
1、制作base仓库,约占空间9.0G:
reposync -r base -p /data/repos_local/centos/7
2、制作extras仓库,约占空间979M:
reposync -r extras -p /data/repos_local/centos/7
3、制作updates仓库,约占空间26G:
reposync -r updates -p /data/repos_local/centos/7
4、制作epel仓库,约占空间17G:
reposync -r epel -p /data/repos_local/centos/7
5、制作dockerCe仓库,约占空间4.6G:
reposync -r dockerCe -p /data/repos_local/centos/7

三、接着创建repo元数据
createrepo /data/repos_local/centos/7/base
createrepo /data/repos_local/centos/7/extras
createrepo /data/repos_local/centos/7/updates
createrepo /data/repos_local/centos/7/epel
createrepo /data/repos_local/centos/7/dockerCe
四、搭建web服务
1、安装nginx
yum install nginx
2、修改配置文件,修改web目录以及添加允许目录浏览
vi /etc/nginx/nginx.conf
root /data/repos_local;
autoindex on;

五、制作repo文件
创建repo文件
vim /data/repos_local/local.repo
local.repo内容:
# 不需要的仓库可以注释掉
# 内网仓库全部关闭gpgcheck校验
# base仓库
[base]
name=Local CentOS-7 Base
baseurl=http://192.168.21.92/centos/7/base
enabled=1
gpgcheck=0
# extras仓库
[extras]
name=Local CentOS-7 Extras
baseurl=http://192.168.21.92/centos/7/extras
enabled=1
gpgcheck=0
# updates仓库
[updates]
name=Local CentOS-7 Updates
baseurl=http://192.168.21.92/centos/7/updates
enabled=1
gpgcheck=0
# epel仓库
[epel]
name=Local Extra Packages for Enterprise Linux 7
baseurl=http://192.168.21.92/centos/7/epel
enabled=1
gpgcheck=0
# dockerCe仓库
[epel]
name=Local Extra Packages for Enterprise Linux 7
baseurl=http://192.168.21.92/centos/7/dockerCe
enabled=1
gpgcheck=0
六、测试私有镜像源
# 创建备份目录
mkdir -p /etc/yum.repos.d/bak
# 备份现有repo源
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
# 下载私有镜像源repo文件
curl -o /etc/yum.repos.d/local.repo http://192.168.21.92/local.repo
# 删除缓存 更新缓存
yum clean all && yum makecache
# 查看镜像源列表
yum repolist
七、创建计划任务 并定时更新
创建脚本文件
vi /data/repos_local/yum_update.sh
脚本内容:
#!/bin/bash
echo "更新软件包"
DATETIME=`date +%F_%T`
exec > /var/log/yum-repo_$DATETIME.log
yum update -y
echo "开始同步centos7的yum源"
reposync -n --repoid=extras --repoid=updates --repoid=base --repoid=epel --repoid=dockerCe -p /data/repos_local/centos/7
echo "同步centos7和epel、base、extras、updates、dockerCe的yum源完成!!!"
#更新元数据
createrepo --update /data/repos_local/centos/7/base/
createrepo --update /data/repos_local/centos/7/extras/
createrepo --update /data/repos_local/centos/7/updates/
createrepo --update /data/repos_local/centos/7/epel/
createrepo --update /data/repos_local/centos/7/dockerCe/
使用crontab创建计划任务,每周同步一次。

0 1 * * 1 /usr/sbin/ntpdate ntp.aliyun.com
0 1 * * 1 /bin/bash /data/repos_local/yum_update.sh
赋予可执行权限:
chmod +x /etc/rc.d/rc.local
/data/repos_local/yum_update.sh
查看日志,说明更新成功。

八、创建一个 index.html 首页文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CentOS 7 内网镜像</title>
<script>document.createElement("myHero")</script>
<style>
myHero {
display: block;
background-color: #ddd;
padding: 10px;
font-size: 20px;
}
</style>
</head>
<body>
<h1>简介</h1>
<hr>
<p>CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本,是一个稳定,可预测,可管理和可复制的免费企业级计算平台。</p>
<p>内网YUM源提供CentOS 7的base、extras、updates、epel、dockerCe仓库镜像,每周定时和华为云YUM源镜像站进行同步更新。</p>
<hr>
<br>
<h1>CentOS 7 配置内网YUM源</h1>
<br>
<h2>1、备份</h2>
<myHero>mkdir -p /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/</myHero>
<br>
<h2>2、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ </h2>
<myHero>curl -o /etc/yum.repos.d/local.repo http://192.168.21.92/local.repo</myHero>
<br>
<h2>3、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ </h2>
<myHero>yum clean all && yum makecache</myHero>
<br>
<h2>4、运行 yum repolist 查看已经生成缓存</h2>
<br>
<br>
</body>
</html>
