基于 rsync 与 Nginx 搭建 CentOS 本地 YUM 源服务器
背景说明
生产区服务器往往无法直接访问外网,为了方便内部软件安装与维护,我们需要搭建一个本地的 YUM 源。本方案使用 rsync 从镜像站同步数据,并通过 Nginx 提供 HTTP 服务。
环境信息:
- 操作系统:CentOS 6.x
- 主机名:yum
- IP 地址:192.168.27.233(生产区服务器)
前置准备
如果服务器需要通过代理上网才能连接外部镜像站,需先配置环境变量。
[root@yum ~]# vim /etc/profile
export RSYNC_PROXY="repo.base.com:3128"
[root@yum ~]# source /etc/profile
部署 Web 服务
这里选用 NGINX 作为 HTTP 服务器,因为它轻量且支持目录浏览功能。
1. 编译安装 NGINX
[root@yum ~]# cd /opt/nginx-1.12.1
[root@yum nginx-1.12.1]# ./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--with-http_ssl_module --with-http_stub_status_module \
--with-http_gzip_static_module --with-pcre
[root@yum nginx-1.12.1]# make && make install
2. 配置 NGINX
系统约定根目录为 /opt/yum_data/。开启目录浏览功能以便查看文件结构。
user root;
server {
listen 80;
server_name yum.base.bjebc.com;
root /opt/yum_data;
location / {
autoindex on; # 开启目录浏览
autoindex_exact_size off; # 文件大小显示为 KB
autoindex_localtime on; # 显示服务器本地时间
}
}
启动服务:
[root@yum sbin]# nginx
创建目录结构
根据需要同步的源类型,规划好本地存储路径。
[root@yum ~]# mkdir -p /opt/yum_data/centos/{6,7}/{extras,os,updates}/x86_64
[root@yum ~]# mkdir -p /opt/yum_data/epel/{6,7}/x86_64/
[root@yum ~]# mkdir -p /opt/yum_data/remi/6/remi/x86_64/
[root@yum ~]# mkdir -p /opt/yum_data/zabbix/
# ... 其他目录依此类推
同步数据源
确认各源的 rsync 地址后,执行同步命令。注意 rsync 命令末尾的斜杠 决定了是否包含源目录本身,通常建议保留。

