文章声明:此文基于木子实操撰写 生产环境: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的磁盘,用于存储仓库镜像。
# 初始化磁盘 [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源进行沟通,目前已经达成了基本共识,正在进行走流程,相信在未来几周将实现国内首源,现可同步的仓库信息。
# 安装同步软件 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-rockytestingNginx 配置
这里的Nginx配置,主要用于为其它Rocky Linux用户提供dnf源服务,方便本地用户快速获取软件包。
# 安装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: 欧巴云 云+社区: 欧巴云 微信公众号: 欧巴云
Rocky Linux 中文社区QQ技术交流群:626649599 微信群:rockylinuxcn [群已满,加微信单独拉人]