我们设置了一个 Squid Web 缓存,用于缓存包下载,这样这里的所有机器就不必独立重新下载所有内容。安装程序会提示输入镜像和代理。只要每台机器都使用完全相同的镜像(此处为http.us.debian.org
)和代理,那么它就可以工作。
这有点烦人,因为它涉及到“手动输入信息”并每次都输入(就像安装程序所做的ftp.us.debian.org
那样,Squid 并没有意识到这是相同的)。
安装程序默认只是mirror
,有什么方法可以使其工作吗?所以我可以偷懒,直接输入一堆吗?
答案1
为了拥有本地 deb 缓存来为我的 Debian 服务器场提供服务,我实际上更喜欢使用apt-cacher-ng
(软件存储库的缓存代理服务器)
它是一个专门支持 APT/deb 的代理,非常可定制,并且可以缓存您的 deb 文件相当长一段时间(可配置)。
您可以使用以下命令安装它:
apt-get install apt-cacher-ng
默认情况下,它将存储库/debs 缓存到/home/apt-cacher-ng
.在此目录下,它为 Debian/Ubuntu 服务器中使用的每个存储库创建一个目录,然后使用发行版,与镜像结构非常相似。作为一个额外的好处,从这里手动从缓存中获取 deb 比从 Squid 服务器中获取要容易得多。
要在所有服务器中使用它,请将包含以下内容的/etc/apt/apt.conf.d
文件添加到目录中:02proxy
Acquire::http { Proxy "http://your_proxy_APT_server:3142"; };
添加该文件后,Debian 软件包管理器将通过配置的 http APT 代理代理所有配置的存储库。
它还具有一个有趣的静态页面,用于咨询其活动。
您可能还需要在防火墙中打开 3142/TCP,以允许服务器与新的代理 APT 服务器通信。
这种设置的优点是,除了为一桶服务器只下载一个 deb 副本之外,还可以节省带宽和公共存储库的使用,还允许您更新不需要 Internet 访问的内部服务器(例如:DHCP 服务器)。
如记录在官方安装指南附录 B,您可以通过在 DHCP 服务器的配置中添加如下内容来发出预置文件:
if substring (option vendor-class-identifier, 0, 3) = "d-i" {
filename "http://host/preseed.cfg";
}
然后使用这些预置选项,您可以自动配置镜像和代理:
d-i mirror/protocol string http
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string http://your_proxy_APT_server:3128/
答案2
编辑:我编辑的预置方法鲁伊·F·里贝罗的回答也可以与 Squid 或任何其他代理一起使用,并且(只要您使用 DHCP)可能是更好的方法。
首先,mirror
将完成系统域名,因此添加一个 DNS 条目mirror.yourdomain.com
。将其指向运行 Apache 的服务器;在此示例中,同一服务器还运行 Squid。
确保 Apache 启用了 mod_proxy 和 mod_proxy_http(例如,a2enmod proxy; a2enmod proxy_http
在 Debian 上)。然后添加一个新的虚拟主机:
<VirtualHost *:80>
ServerName mirror.yourdomain.com
ServerAlias mirror
ProxyPass /debian http://http.us.debian.org/debian
ProxyRemote http http://localhost:3128/
ProxyVia off
</VirtualHost>
重新启动 Apache 后,从 Debian 镜像“mirror”下载的软件包应该会通过缓存。