本指导手册以centos7.9为例

前期准备:

保存yum涉及的所有rpm包和依赖

修改yum的配置,把yum涉及的所有rpm包都保存下来。

vim /etc/yum.conf,修改keepcache的值为1。也可以修改cachedir,rpm包保存的路径。

Untitled

#更换本地yum源为阿里源 
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

在生产环境搭建本地yum仓库

创建本地yum仓库需要createrepo命令。

本地输入yum install createrepo ,我们可以看到大概需要以下几个包。

Untitled

本地安装完之后,就可以创建仓库进行发布了。

安装downloadonly 插件包

我们用yum自带的缓存目录进行发布。

/var/cache/yum/x86_64/7/

Untitled

开始同步下载包

reposync -p /var/cache/yum/x86_64/7/

Untitled

Untitled

Untitled

Untitled

下载非常慢,需要几个小时。

下载7点半开始下,下载到11点50

建仓

createrepo -p /var/cache/yum/x86_64/7/ 

Untitled

crontab定时同步

 crontab -e
 1 2 * * * reposync -np /var/cache/yum/x86_64/7
  #-np:只同步更新的部分

Untitled

Untitled

新开一个终端,安装nginx发布。

利用nginx搭建http局域网服务端

个人比较喜欢使用docker部署nginx。首先在centos部署docker基础环境

添加docker源 
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io

Untitled

安装完成后

docker -v 查看版本

systemctl start docker 启动

systemctl enable docker 设置为开机启动

Untitled

NGINX配置文件和容器创建

nginx 配置文件 file.conf

参考file.conf如下:

log_format  p_access.log  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
server
    {
        listen       8000;  # 监听 8000 端口
        index index.html default.html; # 默认首页文件
        root  /var/www/file;   #文件服务器的根路径
        
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        
        charset utf-8;
        
                # 这里配置拒绝访问的目录或文件
        location ~ (repos) 
        {
            deny all;
        }

                # 静态文件的过期时间,可以不需要此配置
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
            {
                expires      30d;
            }
                
                # 静态文件的过期时间,可以不需要此配置
        location ~ .*\.(js|css)?$
            {
                expires      12h;
            }
                 # 这里很重要! 将日志转发到 /dev/stdout ,可以通过 docker logs -f  来查看容器日志
        access_log  /dev/stdout;
    }

create_file_server.sh 服务器容器创建脚本:

#!/usr/bin/env bash

docker run -dit --name files0 \
--restart always \
-p 80:8000 \
-v $PWD/file.conf:/etc/nginx/conf.d/file.conf \
-v /var/cache/yum/x86_64/7/:/var/www/file \
-w /var/www/file \
nginx

配置和脚本都有了,在任何你愿意的地方建立一个独立目录

我创建在/usr/local/src/docker-nginx

然后执行脚本 ./create_file_server.sh

Untitled

验证:

Untitled

通过web访问80端口

Untitled

运行成功后,把静态文件挂载的目录运行createrepo设置为yum仓库。

客户端测试:

1、客户端修改yum 源

 cd /etc/yum.repos.d
 mkdir bak
 mv \*.repo bak
 vim CentOS-Media.repo
[base]
name = " CentOS-7"
baseurl =http://192.168.205.60/    #局域网yum 源IP地址 
gpgcheck = 0
enabled = 1
yum repolist  # 客户端repo 列表查看

Untitled