前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Rsync和Nginx创建Rocky Linux 8.3 RC1本地存储库镜像

使用Rsync和Nginx创建Rocky Linux 8.3 RC1本地存储库镜像

原创
作者头像
欧巴云
修改2021-05-08 10:22:26
7320
修改2021-05-08 10:22:26
举报
文章被收录于专栏:木子说木子说

文章声明:此文基于木子实操撰写

生产环境:Rocky Linux release 8.3, Nginx 1.14.1

问题关键字:使用Rsync和Nginx创建Rocky Linux 8.3 RC1本地存储库镜像


前述

木子本打算写一篇在Rocky Linux 8.3 RC1上安装Nginx的基础博文,感觉一两条命令,也没有什么太多好写的,而且今天刚好在做Rocky Linux 8.3 RC1本地存储库镜像,正好需要使用Nginx,所以就顺道写了这篇博文。

配置本地存储库镜像目录

因为存储库镜像都比较大,所以一般需要单独创建一个磁盘用于存放对应文件,所以这里单独挂载了一个100GB的磁盘,用于存储仓库镜像。

代码语言:txt
复制
# 初始化磁盘
[root@localhost ~]# mkfs.xfs /dev/sdb

# 创建本地仓库目录
[root@localhost ~]#mkdir -p /data

# 挂载磁盘
[root@localhost ~]#mount /dev/sdb /data

# 创建rocky源目录
[root@localhost ~]# mkdir -p /data/repos/rocky

# 查看磁盘UUID
[root@localhost ~]# blkid | grep sdb
/dev/sdb: UUID="19eab4e2-0cab-498c-95e8-60cd54d64625" BLOCK_SIZE="512" TYPE="xfs"

# 设置开机自动挂载磁盘/dev/sdb
[root@localhost ~]# echo "UUID=19eab4e2-0cab-498c-95e8-60cd54d64625  /data                   xfs     defaults        0 0" >> /etc/fstab

# 确保配置是正常的
[root@localhost ~]# cat /etc/fstab

/dev/mapper/rl-root     /                       xfs     defaults        0 0
UUID=5e85ff20-6774-4dd3-8239-2de3eae0eb20 /boot                   xfs     defaults        0 0
/dev/mapper/rl-swap     none                    swap    defaults        0 0
UUID=19eab4e2-0cab-498c-95e8-60cd54d64625  /data                   xfs     defaults        0 0

配置仓库同步脚本

目前Rocky Linux在多国已经创建存储库镜像,Rocky Linux中文社区也正在与163源进行沟通,目前已经达成了基本共识,正在进行走流程,相信在未来几周将实现国内首源,现可同步的仓库信息

代码语言:txt
复制
# 安装同步软件
dnf install -y rsync

# 创建同步脚本
# 这是简单说一下rsync各参数的意思
# --delete: 将源中不存在的文件进行删除
# -a: 归档(压缩)模式,表示以递归方式传输文件,并保持所有文件属性等同于
# -v: 输出详细同步信息
# -q: 安静模式,禁止显示非错误消息
# -z: 在传输过程中进行压缩
# -S: 对稀疏文件进行特殊处理以节省空间(如虚拟机文件)
# -P: 在传输过程中显示进度
# -H: 保留硬链接,如果您愿意的话,木子建议使用-l选项同来保存软链接(符号链接)
# --delay-updates: 将所有更新的文件放在整个下载的末尾。也就是说,它不会在每次下载新文件时都进行更新,但是相反,如果有100个新文件,则在完成100个新文件后,将它们重新同步到位。
[root@localhost ~]# cat > /etc/rocky8_repo_sync1.sh << EOF
#!/bin/bash
repos_base_dir="/data/repos/rocky/"

if [[ -d "\$repos_base_dir" ]] ; then
  rsync -avzqlH --delete --delay-updates rsync://mirrors.vinters.com/rocky  "\$repos_base_dir"
fi
EOF

# 设置每天晚上0点30同步
[root@localhost ~]# crontab -e
30 0 * * * /etc/rocky8_repo_sync.sh

# 初始化同步
[root@localhost ~]# /etc/rocky8_repo_sync.sh

# 确保对应目录开始同步文件
[root@localhost ~]# ll
总用量 8
lrwxrwxrwx.  1 root root    3 4月  30 17:11 8 -> 8.3
drwxr-xr-x. 11 root root  160 5月   4 09:46 8.3
-rw-r--r--.  1 root root 1672 5月   3 17:11 RPM-GPG-KEY-rockyofficial
-rw-r--r--.  1 root root 1672 5月   3 17:11 RPM-GPG-KEY-rockytesting

Nginx 配置

这里的Nginx配置,主要用于为其它Rocky Linux用户提供dnf源服务,方便本地用户快速获取软件包。

代码语言:txt
复制
# 安装nginx
dnf install -y nginx

# Nginx配置
[root@localhost ~]# cat > /etc/nginx/conf.d/rockylinux.conf << EOF
server {
        listen 80;
        server_name mirror.rockylinux.cn;
        root /data/repos/rocky/;

       location / {
                autoindex on;
        }
}
server {
        listen 443 ssl http2;
        server_name mirror.rockylinux.cn;
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/nginx/cert/dhparam.pem;
        ssl_certificate /etc/nginx/cert/mirror.rockylinux.cn.pem;
        ssl_certificate_key /etc/nginx/cert/mirror.rockylinux.cn.key;
        add_header Strict-Transport-Security "max-age=15768000;includeSubDomains; preload;";
        add_header Referrer-Policy "no-referrer";
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        root /data/repos/rocky/;

       location / {
                autoindex on;
        }
}
EOF

# 测试Nginx配置是否正确
[root@localhost ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# 启动Nginx
[root@localhost ~]# systemctl start nginx

# 设置开机自启动
[root@localhost ~]# systemctl enable nginx

# 设置防火墙允许http&https
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-service=http
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-service=https
# 重载防火墙配置
[root@localhost ~]# firewall-cmd --reload

# 设置SELinux
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t "/data/repos/rocky(/.*)?"
[root@localhost ~]# restorecon -Rv /data/repos/rocky
# 或直接禁用SELinux
[root@localhost ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
[root@localhost ~]# setenforce 0

确保http://mirror.rockylinux.cn & https://mirror.rockylinux.cn可以正常打开即可。

写在最后

在木子写完这篇博文的时候,本地存储库已经同步完成,总共90G,这个存储库还是很大的。如果需要使用本地源,还需要修改/etc/yum.repos.d/目录中的相关配置文件。

下篇预告:在Rocky Linux 8.3 RC1上安装Jenkins配置NodeJS&Java编译环境,如果您有任何想学习了解的技术,欢迎在下方留言,木子将根据需求输出对应基础技术博文。


五平台同步更新:

博客: https://www.oubayun.com

知乎: 欧巴云

51CTO: 欧巴云

云+社区: 欧巴云

微信公众号: 欧巴云

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前述
  • 配置本地存储库镜像目录
  • 配置仓库同步脚本
  • Nginx 配置
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档