1232 字
6 分钟
Debian本地镜像源搭建

首先说一下为什么要弄这事?#

对于肉身在国内的朋友,Debian系的官方源镜像实在太慢,一般的系统更新只能依靠国内的源,如阿里源、腾讯源等厂商云,但如果你需要的是大规模部署,调用这些厂商源对公网上下行端口的负载是很大的,所以如果你只有一两台设备的更新需求,就没必要折腾这事了#

部署一台用于同步的镜像软件源主机,只需要每日定时更新源主机的目录文件就好,内网的其他主机设备无需对外频繁通信,对内网某主机的安全性存在较高要求的,这种方式比较稳妥,另外更新流程只在内网状态下进行,那么就不必考虑出口带宽,同时避免许多公网上的流量监控,只需要考虑源主机软件包的安全性及GPG密钥的安全性即可#

如果你是云服厂商,那么部署一台本地镜像软件源主机就很有必要了,毕竟用户每次租用设备一般都要先 ‘apt update && apt upgrade’ 极快的更新速度能够增强用户体验感,不像某些垃圾厂商只关注防火墙和策略组,当然这些也是必须的,可以做到虚拟主机的外层,而镜像软件源做在宿主机内层,层次化的安全策略更利于管理#

注意存储空间限制#

  • 用于搭建镜像软件源的主机磁盘可用空间必须大于400TB(存在冗余),主机小于350TB的可用空间无需考虑
  • 本次搭建仅服务于 Debian10/11/12 以及 ubuntu20/22 系统,每增加一种系统预计需要增加230TB的可用空间
  • 本次用于搭建的主机内存必须大于2G,交换分区必须大于内存的2倍,CPU核数不做过多要求,线程越多越好

开始搭建#

环境:首先新建一个Debian11的主机(可以是虚拟机)

Terminal window
sudo apt update && sudo apt upgrade # 标准操作保持系统最新
# 安装部署用的必备工具
sudo apt install apache2 rsync e2fsck resize2fs lvextend # 假设使用LXC容器进行搭建,过程可能有扩容需求
# 安装好后打开浏览器应该可以看到apache2的初始index.html页面,搭建完成后我们可以在浏览器看到所有的软件源;另外我们用于同步拉取软件源的是中科大USTC源,同步拉取使用rsync协议工具,而客户机使用则是通过HTTP协议进行更新源
# 接下来,删除apache2初始页面并建立 debian/ 和 ubuntu 两个文件夹
rm -r /var/www/html/index.html
mkdir -p /var/www/html/debian && mkdir -p /var/www/html/debian-security/
mkdir -p /var/www/html/ubuntu

开始前可以用以下工具检查主机可用空间

Terminal window
fdisk -l
df -h
# 开始同步拉取
rsync -avz --relative rsync://rsync.mirrors.ustc.edu.cn/debian/ /var/www/html/debian/
rsync -avz --relative rsync://rsync.mirrors.ustc.edu.cn/debian-security/ /var/www/html/debian-security/
rsync -avz --relative rsync://rsync.mirrors.ustc.edu.cn/ubuntu/ /var/www/html/ubuntu/
# 如果中途出现中断的,可以用以下命令续上
rsync -avzu --delete --relative --partial --update rsync://<源地址>/ /var/www/html/<本地目录>/
# -a (--archive):以归档模式同步文件,相当于-vrlptgoD选项的组合,其中包括递归地同步子目录、保留文件权限和时间、保留软链接等等
# -v (--verbose):输出详细信息,让你了解rsync命令正在做什么
# -z (--compress):对传输的文件进行压缩,可以加快传输速度
# -u (--update):仅同步源目录中更新的文件
# --delete:将目标目录中源目录不存在的文件删除,保持目录同步
# --partial:传输中断后可以从断点继续传输
# --relative:使rsync将相对路径名写入目标目录中

经过漫长的等待,应该已经拉取完成,现在我们需要去每个软件源目录做Web后端的符号链接

Terminal window
cd /var/www/html/debian/ && sudo ln -s README.html index.html
cd /var/www/html/debian-security/ && sudo ln -s README.security index.html
cd /var/www/html/ubuntu/ && sudo ln -s README.html index.html

完成后打开浏览器输入主机的本地内网地址,就可以看到刚刚同步的所有软件源了

  • 借助cron工具立项配置每日凌晨2点定时更新
Terminal window
sudo nano /etc/crontab
# 将以下内容加入文件内容的底部
0 2 * * * rsync -avz --delete --partial --stats rsync://rsync.mirrors.ustc.edu.cn/debian/ /var/www/html/debian/ >> /var/log/cron.log 2>&1
0 2 * * * rsync -avz --delete --partial --stats rsync://rsync.mirrors.ustc.edu.cn/debian-security/ /var/www/html/debian-security/ >> /var/log/cron.log 2>&1
0 2 * * * rsync -avz --delete --partial --stats rsync://rsync.mirrors.ustc.edu.cn/ubuntu/ /var/www/html/ubuntu/ >> /var/log/cron.log 2>&1
# 保存退出后我们需要重启以下cron服务
sudo systemctl restart cron
# 完成之后的每日更新状态我们只需要检查cron.log文件即可
cat /var/log/cron.log

如何增强安全性及配置GPG密钥就不细说了,方法甚多建议查看: 中科大源官方文档

以上便是本篇全部内容,感谢阅读

Debian本地镜像源搭建
https://cyber-mobile.net/posts/debian本地镜像源/
作者
dot1q
发布于
2024-05-19
许可协议
CC BY-NC-SA 4.0