我正在运行一个装有 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 的形式运行)。据我所知,我升级的唯一选择是将我的网站离线进行维护,然后尝试进行升级并希望一切顺利。是这样吗?如果是这样,我该如何将影响降到最低?我更希望让 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?
谢谢。
答案1
- 我必须升级所有 PHP 扩展
是的,依赖于内部 API/ABI
- 我更希望 PHP 7.4 能够与现有的 7.1 完美运行
这可以通过软件集合来实现,它允许并行安装各种版本。
特别是使用 FPM,可以很容易地运行各种实例(每个版本 1 个),并为每个虚拟主机 / 应用程序 / 目录选择使用的实例。
然后,您可以逐个切换站点。
你可以阅读:PHP 配置提示
当然,我建议在生产环境上运行升级之前,先在专用的测试环境上测试每个应用程序。
- 那么最好的升级方式是...使用别人提供的预构建图像
当然,我的答案是肯定的;)我认为最好使用标准二进制文件,在数千台服务器上使用,而不是从源代码构建。此外,在生产服务器上安装开发工具是一种非常糟糕的做法(从安全角度来看)
有关正确安装,请参阅Remi 的配置向导指示。
答案2
必须同时升级我的所有 PHP 扩展(如 openssl、pdo_mysql、iconv、json 等),对吗?我不能使用现有的扩展?是的
据我所知,我升级的唯一选择是将我的网站离线进行维护,然后尝试进行升级并祈祷一切顺利。对吗?不,您可以在不离线的情况下升级,您可以在不卸载 PHP 7.1 的情况下安装 PHP 7.4。因此,只需先安装 PHP 7.4,然后将 Nginx 配置切换到 PHP 7.4。但您需要重新启动 Nginx(可能需要 1-5 秒)。