我正在设置本地存储库镜像,但在理解文档方面遇到了一些问题(它有点过时,是 2010 年的)。
我有一个命令行设置为 cron 作业的一部分,用于将我的驱动器同步到存储库:
rsync -a --bwlimit=3072 --progress --delete rsync://archive.ubuntu.com /media/8TB/ubuntu
我有一个链接这样可行从 /var/www/html 到托管在同一台机器上的 Web 服务器:
在 /media/8TB/ubuntu -s
存储库的基本目录从网络上的其他地方浏览,因为当我将浏览器指向http://192.168.0.14/ubuntu。
我了解 Apache 通过 /var/www/html 中的软链接将 URL 映射到驱动器。该软链接与 SxS 位于不同的位置,并且指向与 SxS 不同的 URL。
更多问题:我应该为存储库本身设置什么用户?当 rsync 作为 cron 作业运行时,我是否必须取消设置它?更具体地说,
1) 这足以用作本地存储库吗?如果是,我应该在每个盒子上给 APT 什么地址来进行本地更新(从本地存储库)?
2)我需要做哪些更改才能让外部除了必要的路由器/网络配置外,网络还需要什么?我假设如果我将端口 80 从我的 WAN IP 转发到存储库服务器,那么它现在应该可以从外部使用,因为http://[外部IP]/ubuntu。但是,如果我需要根据上面的 #1 做出符合要求的更改,这会改变,对吗?
3) 我希望存储库在 rsync 运行之前保持只读状态,在这种情况下,rsync(某个用户?)需要足够长的写入权限才能完成 rsync 过程,然后存储库将恢复为只读状态。我该怎么做?
答案1
1) 这足以用作本地存储库吗?如果是,我应该在每个盒子上给 APT 什么地址来进行本地更新(从本地存储库)?
如果是静态的,请使用本地 IP 地址,否则您需要在网络内部署 DNS 来专门为其更新专用的 FQDN。在本地,IP 最适合
2) 除了必要的路由器/网络配置外,我还需要做哪些更改才能使其从网络外部可用?我假设如果我将端口 80 从我的 WAN IP 转发到存储库服务器,它现在应该可以从外部使用,因为http://[外部IP]/ubuntu。但是,如果我需要根据上面的 #1 做出符合要求的更改,这会改变,对吗?
是也不是。除非您有将域分配给存储库服务器的机制,或者您的路由器足够智能,可以处理 NAT 反射,否则您可能拥有不同的“本地”与“公共”访问路由。您可以试图http://external_ip_here/
尽管在您的本地网络中使用,它可能会起作用。
3) 我希望存储库在 rsync 运行之前保持只读状态,在这种情况下,rsync(某个用户?)需要足够长的写入权限才能完成 rsync 过程,然后存储库将恢复为只读状态。我该怎么做?
将其放在专用系统上,不要让任何人访问系统。此外,在系统上,除了执行该作业的用户之外,不要授予任何人写访问权限rsync
,并考虑创建一个投入的无需密码即可使用系统用户。这足以控制和锁定事物的权限,因此只有 rsync 作业/用户才有访问权限。