接上一篇使用 CentOS 搭建内网 YUM 私有源:镜像篇,这次是直接使用 rsync 同步官方源(国内镜像站)。为了保证文章的完整度,假设是新建的服务器,只是 IP 仍然是 10.1.1.42。

准备

因为使用 rsync 同步,所以需要先在外网把安装包下载好,当然也可以顺便把 httpd 一块载好:

  • rsync
  • httpd 及依赖包

下载完成后,使用 scp 命令把安装包复制到内网服务器安装,而外网除了下载依赖包之外,还需新建几个目录以临时存放 YUM 数据:

# 等离线安装下载好需要的包之后,再安装 rsync
yum install rsync

# 分别建立 CentOS 7 和 epel 的目录
mkdir -p /var/www/html/{centos,epel}/{6,7}

外网

等 rsync 安装完成便可以开始同步(建议在凌晨同步),这里使用的是中科大的镜像站,阿里云不支持 rsync 方法同步,下面以 CentOS 7 和 epel 源为例:

# 输出日志,非必须
exec > yum.log
echo  同步 CentOS 7 Base 源
/usr/bin/rsync -av rsync://rsync.mirrors.ustc.edu.cn/centos/7/os /var/www/html/centos/7
echo  同步 CentOS 7 Extras 源
/usr/bin/rsync -av rsync://rsync.mirrors.ustc.edu.cn/centos/7/extras /var/www/html/centos/7
echo  同步 CentOS 7 Updates 源
/usr/bin/rsync -av rsync://rsync.mirrors.ustc.edu.cn/centos/7/updates /var/www/html/centos/7

# Epel 源,如果全同步有点大,可以根据需要选择性同步
echo  同步 CentOS 7 epel 源
/usr/bin/rsync -av rsync://rsync.mirrors.ustc.edu.cn/epel/7/x86_64/ /var/www/html/epel/7/x86_64

内网

在数据同步完成之前,可以先在内网把环境搭建好。

数据盘

为了便于以后扩展,专门划分了一块 500G 的数据盘用于存放数据,因为用的是阿里云的服务器,需要手动手动挂载:

# 查看未挂载盘符
lsblk -f
# 格式化硬盘为 ext4 格式
mkfs -t ext4 /dev/vdb
# 创建挂载目录并挂载 
mdkir /mirror || mount /dev/vdb /mirror

# 查看 blkid,并复制新增磁盘 UUID 部分
blkid
# 编辑 fstab 文件,按上面的格式新增一行后,按实际信息更改
vi /etc/fstab

修改 httpd

假设 httpd 已安装完成,然后修改默认路径,及关闭默认页面:

# 修改默认文件夹,端口也在里面
vi /etc/httpd/conf/httpd.conf
# 找到三处 /var/www/html,修改为 /mirrors/www/html

# 关闭 Test123...
# 打开 welcome 然后注释所有行即可
vi /etc/httpd/conf.d/welcome.conf

## 重启 httpd
service sshd restart

## 开机自启动
systemctl enable httpd

# 查看是否加入成功
systemctl is-enabled httpd

收尾

等第二天同步完成后,便可着手同步至内网 YUM 服务器:

/usr/bin/rsync -av /var/html / root@10.1.1.42:/mirrors/www/

最后

除了使用 rsync 同步之外,用 reposync 同步效果也一样,不过前者要更方便一些,也不需要重新生成 repodata 索引数据。

此外 rsync 有 includeexclude 参数可以指定需要同步和排除的目录,但不清楚为什么在本地测试正常,正式使用时数据总是不对,所以最终还是采用比较笨的方法。

使用私有源

前一篇提到可以写一个脚本修改源地址,但其实这并非是最佳方法。在阿里云专有云中,默认的源地址是 yum.tbsite.net,最佳方法是在 DNS 中修改这个网址为私有源的 IP 地址,这样可以做到用户层面最佳体验,次之是在 DNS 中新增一条映射,把私有源 IP 指向另一个网址,然后让客户把 hosts 指向这个网址即可。

可惜的是上面的两种方案最终都没有采用。

信息

版本

  • 系统版本
    • CentOS 6.8
    • CentOS 7.3

参考