本文最后更新于 328 天前,其中的信息可能已经有所发展或是发生改变。
前述
随着 Rocky Linux 多个版本的发行,国内各大云厂商已经开始在自家的 ECS 产品系列镜像中添加了 Rocky Linux,各方面已经成熟,版本发布趋于稳定,很高兴宣布 Rocky Linux 可投入生产。
配置本地存储库镜像目录
因为存储库镜像都比较大,所以一般需要单独创建一个磁盘用于存放对应文件,所以这里单独挂载了一个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 中文社区 已与网易源达成共识,在国内上线 Rocky Linux 源。
# 安装同步软件
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 源服务,方便本地用户快速获取软件包。
# 安装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
确保 https://mirror.rockylinux.cn 可以正常打开即可。
写在最后
在写完这篇博文的时候,本地存储库已经同步完成,总共90G,这个存储库还是很大的。如果需要使用本地源,还需要修改 /etc/yum.repos.d/
目录中的相关配置文件。
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
个人有几个建议或疑问:
1 磁盘挂载配置完成后,文章中未明确说明是否需要重启服务器挂载。按实测,如果不重启,只修改/etc/fstab 系统是不能正常挂载的。
2 首次使用rsync同步源完成后,后续自动同步时,同步完成后,是否需要更新repodata下的相关文件,还是在更新的同时就会更新repodata文件夹下的相关内容。如果不更新repodata文件下的内容的话,使用本地源安装时,检索时最新同步的包的信息可能就会有缺失?
3 nginx的配置文件中使用了https方式访问,个人觉得本身就是为了在内部本地局域网之内搭建,个人觉得https就没有必要了,直接使用http的方式应该就可以了。
1)放在/etc/fstab是为了重启后能够自动挂载,未重启的情况下,可以使用mount挂载。
2)正常逻辑是会自动更新repodata目录。
3)不管是内网使用还是外网使用,建议采用https,let’s encrypt证书不收费,建议采用。