nginx搭建yum源镜像
一. 简介
yum是从yum软件仓库获取rpm包来安装的,yum软件仓库通常被称为yum源,我们常用的有官方源和epel源两个。
不过出于以下几个原因:
- 官方的yum源是搭在国外的,国内访问速度不理想
 - 内部机器众多,同时更新可能造成出口网络拥堵
 - 内网无法访问互联网
 
我们需要本地搭建yum源的镜像,这样不仅可以提高访问速度,而且也不用担心没有网络的情况。
搭建yum源镜像也很简单,不过占用的硬盘空间比较大,正好买了Hostens家两年的1T硬盘vps一直没找到用处,搭个玩玩。
二. 同步源数据
这里我们搭建的是CentOS 7 Base源镜像,只需要执行下面命令就可以同步数据啦
# CentOS-Base.repo
mkdir -p /vps/hosts/mirrors/centos
# base
rsync -avrt --delete \
    --exclude-from '/save/install/common/conf/yum/yum-exclude.txt' \
    rsync://mirrors.kernel.org/mirrors/centos/7/os/ \
    /vps/hosts/mirrors/centos/7/os/
# updates
rsync -avrt --delete \
    --exclude-from '/save/install/common/conf/yum/yum-exclude.txt' \
    rsync://mirrors.kernel.org/mirrors/centos/7/updates/ \
    /vps/hosts/mirrors/centos/7/updates/
# extras
rsync -avrt --delete \
    --exclude-from '/save/install/common/conf/yum/yum-exclude.txt' \
    rsync://mirrors.kernel.org/mirrors/centos/7/extras/ \
    /vps/hosts/mirrors/centos/7/extras/
# centosplus
rsync -avrt --delete \
    --exclude-from '/save/install/common/conf/yum/yum-exclude.txt' \
    rsync://mirrors.kernel.org/mirrors/centos/7/centosplus/ \
    /vps/hosts/mirrors/centos/7/centosplus/
其中/save/install/common/conf/yum/yum-exclude.txt文件保存的是我们同步需要忽略的文件夹路径,内容如下
#### rsync://mirrors.kernel.org/mirrors/centos/7/
# rsync://mirrors.kernel.org/mirrors/centos/7/os
# os
x86_64/LiveOS
x86_64/images/
# rsync://mirrors.kernel.org/mirrors/centos/7/updates
# updates
# 没有忽略的文件夹
# rsync://mirrors.kernel.org/mirrors/centos/7/extras
# extras
# 没有忽略的文件夹
# rsync://mirrors.kernel.org/mirrors/centos/7/centosplus
# centosplus
# 没有忽略的文件夹
执行完,大概会占用42G的硬盘空间。
三. nginx配置
下面配置nginx
# mirrors.wangbin.io;
server {
    listen       50443 ssl http2;
    listen       [::]:50443 ssl http2;
    server_name  mirrors.wangbin.io;
    access_log  logs/wangbin.io/access-mirrors.wangbin.io.log siyou325;
    error_log   logs/wangbin.io/error.log;
    ssl_certificate             /vps/certificate/acme/*.wangbin.io/fullchain.cer;
    ssl_certificate_key         /vps/certificate/acme/*.wangbin.io/*.wangbin.io.key;
    ssl_trusted_certificate     /vps/certificate/acme/*.wangbin.io/fullchain.cer;
    root         /vps/hosts/mirrors;
    index        index.html index.htm index.php;
    location ~ ^(.*)/$ {
        charset utf-8;
        autoindex on;
        autoindex_localtime on;             #显示的文件时间为文件的服务器时间
        autoindex_exact_size off;           #改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
    }
    # 禁止访问.svn目录,防止svn信息泄漏,必加项
    location ~ ^(.*)\/\.svn\/ {
        deny all;
    }
}
完成后执行
nginx -t
nginx -s reload
nginx就配置完成啦
四. siyou325-CentOS-Base.repo
siyou325-CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.wangbin.io/centos/$releasever/os/$basearch/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.wangbin.io/centos/$releasever/updates/$basearch/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.wangbin.io/centos/$releasever/extras/$basearch/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.wangbin.io/centos/$releasever/centosplus/$basearch/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
用siyou325-CentOS-Base.repo替换/etc/yum.repos.d/CentOS-Base.repo,命令如下
mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/bak
mv siyou325-CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
完成后执行
yum clean all
yum makecache
五. 结尾
好啦,安装个软件试试吧。
参考: