在Ubuntu 20.04上使用Apt-Cacher NG安装和配置APT缓存服务器

欢迎来到我们的指南,了解如何在Ubuntu 20.04服务器上使用Apt-Cacher NG安装和配置apt-caching服务器。 Apt-Cacher NG 是用于基于Debian的发行版的特殊缓存代理,可创建基于Debian的镜像以及其他Linux发行版的本地缓存。这意味着,每当从官方存储库中提取软件包时,APT高速缓存服务器都会对其进行高速缓存,这样,如果任何其他本地计算机想要安装相同的软件包,它将仅从本地高速缓存服务器中将其提取。这有助于消除互联网连接速度缓慢的瓶颈。

Apt-Cacher NG是从头开始设计的,可以替代apt-cacher,但其重点是在系统资源需求较低的情况下最大化吞吐量。它也可以代替apt-proxy和apt-proxy,而无需修改客户端的source.list文件。

Apt-Cacher NG的一些功能包括;

  • 它重量轻,可以在内存和处理能力低的系统上运行
  • 它支持内部线程,从而避免了进程分叉,为伪线程同步而烦恼,也不依赖于特殊的文件系统功能来进行内部操作
  • 支持HTTP流水线,从而减少资源开销并最大程度地减少可能的故障点

在Ubuntu 20.04上使用Apt-Cacher NG安装和配置APT缓存服务器

运行系统软件包缓存更新。

apt update

在Ubuntu 20.04上安装Apt-Cacher NG

默认情况下,默认的Ubuntu Universe存储库中提供Apt-Cacher NG;

apt-cache policy apt-cacher-ng
apt-cacher-ng:
  Installed: (none)
  Candidate: 3.3.1-2build1
  Version table:
     3.3.1-2build1 500
        500 http://ke.archive.ubuntu.com/ubuntu focal/universe amd64 Packages

因此,您可以通过运行以下命令,使用软件包管理器进行安装:

apt install apt-cacher-ng

在安装过程中,安装程序将提示您是否允许通过Apt-Cacher NG的HTTP隧道。默认情况下,通常禁用此功能。因此,选择 没有 使其保持禁用状态。

在Ubuntu 20.04上运行Apt-Cacher NG服务

当Apt-cacher-ng systemd服务单元创建时, apt-cacher-ng 软件包已安装。该服务已启动,并可以在系统启动时运行;

systemctl is-enabled apt-cacher-ng
enabled
systemctl status apt-cacher-ng
● apt-cacher-ng.service - Apt-Cacher NG software download proxy
     Loaded: loaded (/lib/systemd/system/apt-cacher-ng.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-09-09 17:48:46 UTC; 31min ago
   Main PID: 2785 (apt-cacher-ng)
      Tasks: 1 (limit: 2282)
     Memory: 2.1M
     CGroup: /system.slice/apt-cacher-ng.service
             └─2785 /usr/sbin/apt-cacher-ng -c /etc/apt-cacher-ng ForeGround=1

Sep 09 17:48:45 ubuntu20 systemd[1]: Starting Apt-Cacher NG software download proxy...
Sep 09 17:48:46 ubuntu20 systemd[1]: Started Apt-Cacher NG software download proxy.

您可以像控制任何systemd服务一样控制服务。

Apt-Cacher NG也监听端口 3142/TCP 默认。

ss -altnp | grep apt
LISTEN    0         250                0.0.0.0:3142             0.0.0.0:*        users:(("apt-cacher-ng",pid=2785,fd=10))                                       
LISTEN    0         250                   [::]:3142                [::]:*        users:(("apt-cacher-ng",pid=2785,fd=11))

在防火墙上打开Apt-Cacher NG服务器端口

如果UFW已启用并正在运行,则需要在防火墙上打开Apt-Cacher NG服务器端口以允许远程连接。

ufw allow 3142/tcp

在Ubuntu 20.04上配置Apt-Cacher NG Server

安装Apt-cache-ng后,请对其进行配置以达到其目的。在运行Apt-Cacher-NG的服务器上,主要配置文件 /etc/apt-cacher-ng/acng.conf。该文件受到高度评论,在大多数情况下, 使用默认配置选项可以很好地运行

基本上,以下是Apt-Cacher NG配置文件中默认启用的一些参数。

grep -vE "^#|^$" /etc/apt-cacher-ng/acng.conf
CacheDir: /var/cache/apt-cacher-ng
LogDir: /var/log/apt-cacher-ng
SupportDir: /usr/lib/apt-cacher-ng
Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives
Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu # Ubuntu Archives
Remap-cygwin: file:cygwin_mirrors /cygwin # ; file:backends_cygwin # incomplete, please create this file or specify preferred mirrors here
Remap-sfnet:  file:sfnet_mirrors # ; file:backends_sfnet # incomplete, please create this file or specify preferred mirrors here
Remap-alxrep: file:archlx_mirrors /archlinux # ; file:backend_archlx # Arch Linux
Remap-fedora: file:fedora_mirrors # Fedora Linux
Remap-epel:   file:epel_mirrors # Fedora EPEL
Remap-slrep:  file:sl_mirrors # Scientific Linux
Remap-gentoo: file:gentoo_mirrors.gz /gentoo ; file:backends_gentoo # Gentoo Archives
Remap-secdeb: security.debian.org ; security.debian.org deb.debian.org/debian-security
ReportPage: acng-report.html
ExThreshold: 4
LocalDirs: acng-doc /usr/share/doc/apt-cacher-ng

使用Apt-Cacher NG服务HTTPS存储库

默认情况下,Apt-cacher NG不为HTTPS存储库提供服务器。要将其启用到服务器HTTPs存储库,您需要通过取消注释该行来配置通过Apt-Cacher代理进行的HTTPS连接隧道, # PassThroughPattern: .* # this would allow CONNECT to everything/etc/apt-cacher-ng/acng.conf 这样看起来

vim /etc/apt-cacher-ng/acng.conf
...
# the server name with port and must be correctly formatted and terminated.
# Examples:
# PassThroughPattern: private-ppa.launchpad.net:443$
PassThroughPattern: .* # this would allow CONNECT to everything
#
# Default: ^(bugs.debian.org|changelogs.ubuntu.com):443$
# PassThroughPattern: ^(bugs.debian.org|changelogs.ubuntu.com):443$
...

缺点是apt-cacher-ng将代理 不缓存 存储在SSL / TLS存储库中的对象。

重新启动Apt-Cacher NG服务

每次进行任何配置更改时,都需要重新启动Apt-Cacher-NG以使更改通过运行命令生效;

systemctl restart apt-cacher-ng

限制对Apt-Cacher NG的访问

作为一项安全措施,您需要定义仅允许通过Apt-Cacher NG下载软件包的主机。 Apt-Cache-ng支持使用TCP包装器的访问控制列表。因此,您可以使用 /etc/hosts.allow/etc/hosts.deny 文件分别将某些主机列入白名单或黑名单。

例如;

允许主持人 192.168.57.17 并将网络192.168.57.0/24上的所有主机都使用Apt-Cacher NG服务器,请在 /etc/hosts.allow

apt-cacher-ng : 192.168.57.17 192.168.57.0/24

阻止除主机192.168.57.27之外的网络192.168.43.0/24上的所有主机;

  • 将以下行放入 /etc/hosts.deny
apt-cacher-ng : 192.168.57.0/24
  • 和下面的行 /etc/hosts.allow
apt-cacher-ng : 192.168.57.27

配置客户端以使用Apt-Cacher NG

完成自定义Apt-Cacher NG服务器配置后,您需要配置客户端,以便它们通过Apt-Cacher NG服务器进行软件包安装。

可以通过两种方式配置客户端以通过Apt-Cacher下载软件包。

  • 将缓存机指定为客户端的HTTP代理
  • 用sources.list中的“缓存”主机替换所有镜像主机名

将缓存机指定为客户端的HTTP代理

在这种方法中,您需要创建代理配置文件,该文件指向以下位置的Apt-Caching-NG服务器 /etc/apt/apt.conf.d 如下所示;

echo 'Acquire::http::Proxy "http://192.168.57.6:3142";' > /etc/apt/apt.conf.d/00aptproxy

哪里 192.168.57.6 是您的Apt-cacher-NG服务器IP地址。

用sources.list中的“缓存”主机替换所有镜像主机名

在这种情况下,您需要使用中的Apt-cacher-NG服务器IP地址替换所有镜像主机名/ URL。 /etc/apt/sources.list。例如像镜子

deb http://us.archive.ubuntu.com/ubuntu/ focal universe

将被格式化为;

deb http://192.168.57.6:3142/us.archive.ubuntu.com/ubuntu/ focal universe

与第二种方法相比,第一种方法更为方便。

验证是否使用Apt-Cacher NG服务器

要验证是否使用Apt-Cacher NG服务器,请在您的Debian / Ubuntu上运行命令以更新和升级软件包。

在此之前,在Apt-Cacher NG服务器上,尾随日志;

tail -f /var/log/apt-cacher-ng/apt-cacher.log

然后在客户端上,运行系统更新。

apt update
apt upgrade

在服务器上,您应该能够在apt-cacher.log文件上看到客户端与Apt-Cacher NG的连接。

...
1599680058|O|218|192.168.57.8|uburep/dists/focal/InRelease
1599680058|O|226|192.168.57.8|uburep/dists/focal-updates/InRelease
1599680058|O|228|192.168.57.8|uburep/dists/focal-backports/InRelease
1599680058|O|227|192.168.57.8|uburep/dists/focal-security/InRelease
1599680216|O|218|192.168.57.8|uburep/dists/focal/InRelease
1599680216|O|226|192.168.57.8|uburep/dists/focal-updates/InRelease
1599680217|O|228|192.168.57.8|uburep/dists/focal-backports/InRelease
1599680217|O|227|192.168.57.8|uburep/dists/focal-security/InRelease
1599680226|I|2927|192.168.57.8|uburep/pool/main/u/ubuntu-meta/ubuntu-server_1.450.2_amd64.deb
1599680226|O|3011|192.168.57.8|uburep/pool/main/u/ubuntu-meta/ubuntu-server_1.450.2_amd64.deb
1599680226|I|60913|192.168.57.8|uburep/pool/main/b/base-files/base-files_11ubuntu5.2_amd64.deb
...

Apt-Cacher NG命令和控制页

Apt-Cacher NG随Web服务器一起安装,使其能够代理HTTP软件包下载。

Web服务器还可以用于执行其他任务管理任务,例如报告。例如,您可以通过导航到Apt-Cacher NG报告 http://:3142/acng-report.html

为了节省存储空间,您可能需要不时清理缓存。 Apt-Cacher NG会与其本身一起安装cron作业,该作业每天运行一次,以从缓存中清除陈旧的文件;

/etc/cron.daily/apt-cacher-ng

您也可以从报告页面执行此操作。点击 开始扫描和/或到期

在Ubuntu 20.04上使用Apt-Cacher NG安装和配置APT缓存服务器

这就是如何在Ubuntu 20.04上使用Apt-Cacher NG安装和配置APT缓存服务器的全部内容。

参考/进一步阅读

Apt-Cacher NG

Apt-Cache服务器Ubuntu

其他教程

在Ubuntu 20.04上安装和配置AIDE

在Ubuntu 20.04 / 18.04上安装和设置NetData

在Ubuntu 20.04上安装和设置Lynis安全审核工具

在Ubuntu 20.04上安装和设置Passbolt Password Manager

Sidebar