Nginx 和自动更新

Nginx 和自动更新

我在 Ubuntu 12.04.1 上unattended-upgrades配置了自动安全更新,我首先通过添加来安装 Nginx

deb http://nginx.org/packages/ubuntu/ lucid nginx
deb-src http://nginx.org/packages/ubuntu/ lucid nginx

按照/etc/apt/sources.list官方维基,然后

sudo apt-get update
sudo apt-get install nginx

安装了 Nginx 的所有标准模块。但现在我认为我可以充分利用 Nginx 的一两个可选模块,例如 gzip 预压缩模块或一些与安全相关的模块。到目前为止,我看到了两种向 Nginx 添加可选模块的方法,一种是从源代码编译和安装,另一种在本文

那么,我应该选择哪种方式才能使自动更新仍然运行并应用于 Nginx它的可选模块?或者我应该创建一个 cron 作业,其中包含特定于 Nginx 的命令/脚本,而不是使用unattended-upgrades实用程序?我可以选择批量更新和仅安全更新以自动应用于标准可选模块?最后,是否有可能在运行中自动更新 Nginx 的模块(无需断开任何连接),例如文档表明有可能

sudo kill -USR2 $( cat /run/nginx.pid )

PS 实际上我不确定unattended-upgrades实用程序是否会首先自动更新标准模块,因为自 Nginx 安装以来还没有足够的时间来确定。

答案1

unattended-upgrades仅适用于使用包管理器安装且具有与之关联的包存储库的应用程序。基本上,升级/更新的一般工作原理是更新程序会监视比较机制。当比较结果显示已安装应用程序的值与存储库中的值不同时,将触发更新序列(它会自动更新或提示用户更新,具体取决于设置和更改内容)。

当您重新编译应用程序时,使用您提到的任一方法(Stan 的方法实际上也是重新编译,只是使用dpkg而不是make,您将安装与存储库分离)。

斯坦的帖子反映了这一点:

当你升级到新版本的 nginx 后,这个重新编译的包将被覆盖。你将不得不再次执行此过程。

因此,最好的办法是使用 cron 作业和自定义脚本来管理 Nginx 的自动更新。不过,好消息是,如果您愿意付出努力来编写和测试适当的脚本,您应该能够自动化整个过程。第一次安装后,脚本不必担心依赖关系,只需提取新源并使用所需的选项进行重建即可。

相关内容