利用nginx缓存技术构建企业镜像站

一,简介

1,构建企业内部镜像站的必要性

企业的服务器一般都是放在自己局域网环境中,不可能每台服务器都可以连接外网,这样的话在安装软件包,升级包,打补丁,等类似依赖于镜像站的操作就会变得很麻烦,因此企业内部构建一个自己的镜像站将变得很有必要。

2,构建企业镜像站的方法

这里说两种方法,一种是利用nginx缓存来构建镜像站,另一种是使用rsync搭建centos镜像站,本文主要介绍的是利用nginx缓存技术来构建镜像站,另一种下回再介绍。

3,nginx缓存镜像站介绍

利用nginx缓存技术搭建的镜像站是这样的,当客户端安装一个包的时候,这个包如果nginx缓存服务器上没有的话它就会到你指定的外网镜像站去下载此包返回给你,并且在本地你指定的目录下缓存一份此包,因此在你安装的包如果在nginx缓存服务器本地没有缓存的话那它就要去请求外网有点慢,不过现在企业级的外网带宽也不必担心这一点;以后别的客户端如果需要用到此包的话那就直接在缓存中取了,速度非常快。

二,搭建步骤

1,搭建前准备

在系统上创建一个目录叫做mirrors,作为镜像的缓存目录

mkdir /mirrors

并拿出一块单独的磁盘后创建文件系统挂载到此目录。

我选的外网镜像站是http://mirrors.ustc.edu.cn/,因为此镜像站的包比较全,如果我们用rsync搭建centos镜像站的话,那次网站就不适应了,因为此网站不支持rsync

2,安装nginx

本次搭建以centos7为例;直接使用yum安装nginx包,提前配置好yum源,这里使用的yum源是aliyun的;提醒一下要将firewalld关闭,firewalld其实就是iptables是centos7上引入了新的iptables前端管理服务工具,firewalld它是以iptables为基础来生成和管理规则的,但是它又引入了一些新的概念;另外还要将selinux关闭。

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum -y install nginx

3,配置nginx缓存

在配置的时候我们只需要增加location里面的配置项,其他的地方可以保持默认,配置如下:

cp /etc/nginx/nginx  /etc/nginx/nginx.backup-2018-01-22
vim /etc/nginx/nginx.conf

  location / {
       expires 3d;
       proxy_set_header Host $proxy_host;
       root /mirrors;
       proxy_store on;  #表示启用缓存功能
       proxy_store_access user:rw group:rw all:rw;
       proxy_temp_path /mirrors;  #缓存的路径
       if ( !-e $request_filename) {
            proxy_pass http://mirrors.ustc.edu.cn; #这就是我们去缓存的镜像站地址
       }
  }

4,启动nginx服务

systemctl start nginx
systemctl enable nginx

三,客户端测试

1,客户端配置repo文件

以下是我的客户端的repo文件,其中192.168.23.88就是我nginx缓存服务器

[base]
name=CentOS-$releasever - Base
baseurl=http://192.168.23.88/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://192.168.23.88/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://192.168.23.88/centos/$releasever/extras/$basearch/
gpgcheck=1
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://192.168.23.88/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

2,测试安装包

从以上截图可以看出,安装包成功。

3,查看nginx缓存服务器中telnet包是否已缓存、

可见telnet包装已经缓存到nginx那台服务器的本地了,下次如果还有别的客户端去安装的时候就会很快的安装完成不用再去外网找了。

 

posted @ 2018-01-22 20:22  root_shell  阅读(69)  评论(0)    收藏  举报