在生产系统上升级PHP的最佳实践

我们有两个负载平衡的Web服务器运行PHP 5.3。 我们已经被开发团队要求将PHP升级到5.4,因为它们需要某些function。 主要的问题是5.3是最新的内置于distros仓库,所以要使用包pipe理器升级,我需要添加另一个第三方仓库。 我本人没有这个问题,但我关心使用来自“非官方”来源的软件包。

另一个select是从源代码编译PHP,但是我想这会阻止我使用包pipe理器在将来的任何阶段进行升级。

所以我想我只是寻找一些指导去哪里。 编译从源代码或从任何旧的回购,声称要提供PHP 5.4安装? 或者也许是我没有考虑过的第三个选项?

其实,你真正的问题是在生产环境中这样做。 我的意思是,您必须尽可能减less停机时间,并计划恢复(回滚)程序,以防出现问题。

通常,我并不关心仓库的“官方性”,而是“声誉”。 我不习惯认为“非官方的”公开的开放源代码回复将恶意软件注入到软件包中(安全问题),而且我认为如果它们受到欢迎并被广泛使用,它们将得到很好的维护(可靠性关注)。

如果你真的关心使用非官方的回购,你有一个更难的select:从源代码编译,然后覆盖PHP官方回购更新。 这会带来风险。

这是我的策略。

首先,制作应用程序可复制快照 。 收集文件,数据库条目和任何需要启动一个全新的服务器上的应用程序(如果你想负载平衡3,但你真的不想)。 这将是你的回滚程序。

其次,使用当前的PHP安装制作服务器快照。 完整的系统映像是合适的。 把它保持为金色的形象。 您将随服务器一起备份您的应用程序,但是没关系。

第三,做源代码编译,可能先尝试升级。

第四,当你的官方回购更新时,创build一个新的应用程序快照,恢复旧的黄金服务器映像,升级PHP,然后升级应用程序到你刚做的快照。

如果出现任何问题,你总是有:

  1. 一个备份应用程序来恢复。 我不认为你每秒处理数千个事务,所以数据丢失可能是最小甚至是空的
  2. 一个完整的服务器映像,以防万一事情真的发生,非常糟糕

我个人更喜欢从源代码编译如果你想要的最新版本的任何东西。 但是,这听起来像你还没有做过testing,并考虑到可能出现的问题,我强烈build议你做脱机testing。

为此,我build议您创build一个虚拟机,使其成为实时系统的副本。 做你的升级。 你甚至可以testing每种方法,看看什么最适合你。

最重要的是,如果使用PHP的服务器上还有其他东西,确保它在升级后仍能正常工作。 PHP升级对于破坏应用程序而言是臭名昭着的,即使是在使用子版本的情况下也是如此,更不要说了。