本指导手册以centos7.9为例
前期准备:
保存yum涉及的所有rpm包和依赖
修改yum的配置,把yum涉及的所有rpm包都保存下来。
vim /etc/yum.conf,修改keepcache的值为1。也可以修改cachedir,rpm包保存的路径。
#更换本地yum源为阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
在生产环境搭建本地yum仓库
创建本地yum仓库需要createrepo命令。
本地输入yum install createrepo ,我们可以看到大概需要以下几个包。
本地安装完之后,就可以创建仓库进行发布了。
安装downloadonly 插件包
我们用yum自带的缓存目录进行发布。
/var/cache/yum/x86_64/7/
开始同步下载包
reposync -p /var/cache/yum/x86_64/7/
下载非常慢,需要几个小时。
下载7点半开始下,下载到11点50
建仓
createrepo -p /var/cache/yum/x86_64/7/
crontab定时同步
crontab -e
1 2 * * * reposync -np /var/cache/yum/x86_64/7
#-np:只同步更新的部分
新开一个终端,安装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
安装完成后
docker -v 查看版本
systemctl start docker 启动
systemctl enable docker 设置为开机启动
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
验证:
通过web访问80端口
运行成功后,把静态文件挂载的目录运行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 列表查看