接上一篇[[使用 CentOS 搭建内网 YUM 私有源:镜像篇]],这次是直接使用 rsync 同步官方源(国内镜像站)。为了保证文章的完整度,假设是新建的服务器,只是 IP 仍然是 10.1.1.42。
准备
因为使用 rsync 同步,所以需要先在外网把安装包下载好,当然也可以顺便把 httpd
一块载好:
- rsync
- httpd 及依赖包
下载完成后,使用 scp 命令把安装包复制到内网服务器安装,而外网除了下载依赖包之外,还需新建几个目录以临时存放 YUM 数据:
# 等离线安装下载好需要的包之后,再安装 rsyncyum install rsync
# 分别建立 CentOS 7 和 epel 的目录mkdir -p /var/www/html/{centos,epel}/{6,7}
外网
等 rsync 安装完成便可以开始同步(建议在凌晨同步),这里使用的是中科大的镜像站,阿里云不支持 rsync 方法同步,下面以 CentOS 7 和 epel 源为例:
# 输出日志,非必须exec > yum.logecho 同步 CentOS 7 Base 源/usr/bin/rsync -av rsync://rsync.mirrors.ustc.edu.cn/centos/7/os /var/www/html/centos/7echo 同步 CentOS 7 Extras 源/usr/bin/rsync -av rsync://rsync.mirrors.ustc.edu.cn/centos/7/extras /var/www/html/centos/7echo 同步 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
## 重启 httpdservice sshd restart
## 开机自启动systemctl enable httpd
# 查看是否加入成功systemctl is-enabled httpd
收尾
等第二天同步完成后,便可着手同步至内网 YUM 服务器:
最后
除了使用 rsync
同步之外,用 reposync
同步效果也一样,不过前者要更方便一些,也不需要重新生成 repodata 索引数据。
此外 rsync 有 include
和 exclude
参数可以指定需要同步和排除的目录,但不清楚为什么在本地测试正常,正式使用时数据总是不对,所以最终还是采用比较笨的方法。
使用私有源
前一篇提到可以写一个脚本修改源地址,但其实这并非是最佳方法。在阿里云专有云中,默认的源地址是 yum.tbsite.net
,最佳方法是在 DNS 中修改这个网址为私有源的 IP 地址,这样可以做到用户层面最佳体验,次之是在 DNS 中新增一条映射,把私有源 IP 指向另一个网址,然后让客户把 hosts 指向这个网址即可。
可惜的是上面的两种方案最终都没有采用。
信息
版本
- 系统版本
- CentOS 6.8
- CentOS 7.3