![如何在单个服务器上的多个站点上逐步升级 PHP?](https://linux22.com/image/877680/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%8D%95%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E5%A4%9A%E4%B8%AA%E7%AB%99%E7%82%B9%E4%B8%8A%E9%80%90%E6%AD%A5%E5%8D%87%E7%BA%A7%20PHP%EF%BC%9F.png)
我在一台 Ubuntu 12.04 服务器上托管了一组基于 PHP 的网站,我需要为它们升级 PHP。但是,由于一些网站处于 QA/准备阶段,而其他网站处于生产阶段,因此我需要逐步升级。也就是说,我希望先升级 QA 网站,这样我就可以检查升级 PHP 是否不会破坏任何东西,然后再将其投入生产。最好的方法是什么?
所有网站均通过 Apache 提供服务,并且拥有自己的 vhost 文件。
我想象我可以(以某种方式)在特定点安装新版本的 PHP,并通过配置(Apache?vhost?)指定站点使用此版本的 PHP(而不是 的版本/usr/bin/php
)。
所涉及的 PHP 版本相当旧:我目前正在从 PHP 5.3 升级到 5.4。尽管(显然)我很快就需要升级到 5.6。所以我正在寻找一个可以重复使用的过程。
答案1
您可能应该有两个或更多不同的服务器,一个用于测试,另一个用于生产等等。VPS 现在真的很便宜,并且基于 VPS 的解决方案比配置、维护、更新等要容易得多...要记住的原则称为“KISS”。
无论如何,回到问题:我将研究在同一台机器上运行的多个 FPM 实例,每个 PHP 版本一个。这样,只需一行 ProxyPassMatch 即可将一个站点(即 vhost)从一个 PHP 版本切换到另一个 PHP 版本。这将允许您拥有一个带有多个 PHP 后端的 Apache 前端。
(对我来说,同一台机器上的多个 Apache 就像一场噩梦)。
Php-fpm 是一个独立的 CGI 服务器,在 Apache 之外运行 PHP。如果您仍在使用 mod-php,那么您应该首先迁移到 fpm 并学习如何使用 Apache 进行代理。
您需要从源代码构建每个 PHP 版本并将其安装到不同的文件夹,准备所有配置,并创建您的初始化脚本。这并不难。您可以在此处找到一个示例(它基于 nginx,但易于迁移):http://www.sitepoint.com/run-multiple-versions-php-one-server/
如果您这样做,请记住您需要让 PHP 保持最新的安全补丁,因此您需要分配时间进行下载、重新编译和测试。