我经常登录到我的 Ubuntu 12.04.2 服务器(使用实时生产数据运行 Postgres 9.2.4)并看到类似于:
4 packages can be updated.
4 updates are security updates.
当然,这种情况大约每隔几天就会发生一次。我对自动更新不感兴趣(我睡着的时候可以更改的东西越少越好),但我有兴趣始终让我的服务器保持最新状态,所以我的问题是:当我看到如下输出时那,运行是否总是被认为是安全的apt-get upgrade
,或者有时它会破坏东西。我知道补丁并不总是完美的(因此在标题中引用“总是”),但作为一般规则,运行它是否安全(特别是考虑到这是一个数据库服务器与仅通过 Nginx 提供 CSS 文件的东西)?
一般来说,是的,这是安全的。不过,对于关键包(Postgres、Nginx 等),我建议将这些包固定到特定版本,这样它们就不会得到更新。例如,当 Postgres 更新时,它将重新启动数据库服务器,这是您希望能够安排计划停机时间的事情。
也就是说,在将升级升级到生产环境之前最好先在暂存服务器上测试升级,因此将其添加到部署过程中是需要考虑的事情。
是和不是。大多数应用程序都可以,但有些应用程序可能不太乐意升级。
我见过使用从 1.6.29 到 1.6.30 的 java 的应用程序中断应用程序的示例。还看到 mysql 在 5.0.X 5.0.X+1 之间中断(不要记住这里的确切数字)。
系统应用程序应该大部分都可以,但是您应该仔细阅读您的服务器实际提供的应用程序的发行说明。
阅读 nginx 的变化,尝试了解是否有任何变化可能会影响您的特定设置。您使用的应用程序越高级,就越容易被破坏。
Aptitude 更容易记住命令:
aptitude safe-upgrade
与aptitude full-upgrade
. 安装它仍然是一个好主意,apt-listchanges
这样您将获得有关更新包中更改的信息以及取消升级的选项。是的,我尝试使用命令在 Ubuntu 18.04 中升级
在我的服务器中升级了 apache 服务器和 php mysql 就可以了。
不。如果这是你管理的生产实例,作为你工作的一部分,包应该明确地固定、编码和封装在你的编排解决方案中(即,ansible、厨师、容器图像,等等)。如果你允许你的包管理器升级包,在一个包紧密耦合的生态系统中,你最终会破坏你的服务可用性。
其他所有提出不同建议的人都不知道他们在说什么,并且出于某种原因充满信心,尽管对服务可用性的专业关注非常明显。你的工作不是更新包——你的工作是管理服务可用性、编排和检测。