我正在使用 CentOS 7 和 PHP 7.1 运行生产服务器。我很想升级到 PHP 7.4,但我对在生产服务器上执行此操作感到紧张。我不是世界上最伟大的系统管理员,所以我有 3 个问题,如果他们对其他人来说是愚蠢/显而易见的,我深表歉意:-)
我必须同时升级我所有的 PHP 扩展(如 openssl、pdo_mysql、iconv、json、gd、phar、pdo、libmagic 和无数其他),对吗?我不能使用现有的扩展?那么这是否意味着我需要列出所有这些扩展,然后获取 7.4 版本以确保我可以在升级核心 PHP 文件的同时升级所有这些?(或者是否有一些自动化的方法来升级 PHP 和所有现有的扩展?“手动”做这件事感觉像是很多工作,而且很有可能搞砸一些事情。我只是想知道是否有一个更优雅的解决方案我在俯瞰。)
这一切都在生产服务器上(PHP 7.1 在 nginx 下作为 php-fpm 运行)。AFAIK 我唯一的升级选择是让我的网站离线进行维护,然后尝试进行升级,希望不会出现严重错误。那正确吗?如果是这样,我怎样才能将影响降到最低?我更希望让 PHP 7.4 与现有的 7.1 一起完美运行,然后快速切换到 7.4,但不知道如何。(编辑:我应该补充一点,我没有使用 Docker 或任何其他类型的虚拟化。当我这样做
whereis php
时php: /usr/bin/php /usr/lib64/php /etc/php.d /etc/php.ini /usr/share/php /usr/share/man/man1/php.1.gz
:)然后最好的升级方法是......使用某人提供的预构建图像,例如Remi 的 RPM Repo?
谢谢。
是的,依赖于内部 API/ABI
这可以通过允许并行安装各种版本的软件集合来实现。
尤其是使用 FPM,运行各种实例(每个版本 1 个)非常容易,并为每个虚拟主机/应用程序/目录选择使用的实例。
然后,您可以一个一个地切换站点。
你可以阅读:PHP 配置技巧
当然,我会建议在专用测试环境中测试每个应用程序,然后再在生产环境上运行升级。
当然,我的回答是肯定的;)我认为最好使用标准二进制文件,在数千台服务器上使用,而不是从源代码构建。此外,在生产服务器上安装开发工具是一种非常糟糕的做法(从安全角度来看)
如需正确安装,请参阅Remi 的配置向导说明。
必须同时升级我所有的 PHP 扩展(如 openssl、pdo_mysql、iconv、json 等),对吗?我不能使用现有的扩展?是的
AFAIK 我唯一的升级选择是让我的网站离线进行维护,然后尝试进行升级,希望不会出现严重错误。那正确吗?不,您无需离线即可升级,无需卸载 PHP 7.1 即可安装 PHP 7.4。因此,只需先安装 PHP 7.4,然后将 Nginx 配置切换到 PHP 7.4。但是你需要重启 Nginx(可能需要 1-5 秒)。