我正在运行 Centos 生产网络服务器。我想知道运行更新的最佳实践是什么。我应该使用 yum-cron 或 yum-updatesd 自动执行此操作吗?或者是否存在更新破坏站点的危险,因此最好在测试服务器上进行更新,然后每周手动运行更新?
大多数服务器仅使用官方存储库,但有些服务器具有 PHP 模块的原子存储库,否则无法使用。在这种情况下什么是最好的?我可以将 yum 设置为仅对 PHP 模块使用 Atomic 吗?我不希望所有内容都更新为 Atomic 中的前沿内容,我宁愿相信 Centos(或者真正的 Red Hat)来保持我的服务器稳定和安全。
答案1
两种方式都各有利弊,您确实需要仔细研究您的系统架构才能知道哪种方式最适合您。无论你走哪条路,你都应该明白为什么您选择了该方法以及其缺点是什么,以便您可以弥补它们。
这里有一些要考虑的事情:
安全更新应该总是以一种或另一种方式应用,而且宜早不宜迟。如果您的服务器由于某种原因没有及时应用安全更新,请纠正您的系统管理员习惯。
发行版更新通常都很好,尤其是来自官方来源的更新。如果您在应用它们时感到不舒服,也许您没有使用最适合您需求的发行版。您应该使用与您的方法相匹配的发行版。换句话说,您可以相信更新符合您的最佳利益。如果他们移动得太快或者做出的软件更改破坏了你的东西,你可能应该使用不同的发行版。
更新可能会破坏你的东西。如果您使用了已弃用的功能或只是编写了糟糕的内容,那么迁移到较新的软件可能会破坏您的代码。您应该考虑一种系统架构,该架构允许您在生产系统上运行产品之前测试更新的产品。
如果您使用自动更新功能,则应该始终有办法回滚到已知的工作配置。如果某些更新破坏了生产系统上的产品,完整的系统快照可以成为救星。
这并不是一份详尽的清单,只是一些让您思考的事情。最后,这不是其他人可以为你做出的决定。你是管理员。了解您的系统。了解你的发行版。
答案2
我 100% 同意 Caleb 所说的。我提供的更多 CentOS 特定的标记:
该发行版基于 RedHat 及其补丁。这些补丁经过测试非常好,在过去 4 年里,我们一直在 50 多台服务器上使用 CentOS 5,从未出现过糟糕的补丁。
但是:虽然我们每天都会自动将所有补丁应用到仅运行分发内容的服务器,但只有在我们的测试系统在该配置中运行几天后,我们才会启动生产服务器(在 glibc 或内核更新之后)。
对于其他存储库,我们将它们镜像到暂存目录。这些补丁首先应用于测试服务器。如果证明没有任何问题,我们将激活暂存目录并将其复制到生产存储库。
自动修补的副作用是修补的组件经常重新启动 - 因此,如果您在启动后错误配置它们,则重新启动将失败。