如何在redhat上安装多个版本的php

如何在redhat上安装多个版本的php

我们有一个旧版 Web 应用程序运行 php 5.4.10,另一个应用程序运行最新版本的 php ver 7.1

我们希望在 redhat 7.3 服务器的一个实例上使用 apache 托管这两个应用程序。

以下是为每个 Web 应用程序配置的虚拟主机:

<VirtualHost *:80>
     DocumentRoot /var/www/app1.local.com/public_html
     ServerName www.app1.local.com
     ServerAlias app1.local.com
     ErrorLog /etc/var/www/app1.local.com/error.log
     CustomLog /var/www/app1.local.com/requests.log
</VirtualHost>

<VirtualHost *:80>
     DocumentRoot /var/www/app2.local.com/public_html
     ServerName www.app2.local.com
     ServerAlias app2.local.com
     ErrorLog /etc/var/www/app2.local.com/error.log
     CustomLog /var/www/app2.local.com/requests.log
</VirtualHost>

根据本指南:https://webtatic.com/packages/php71/ 我知道我可以使用“sudo yum install php71w php71w-mysql”来安装最新版本的 php 并使应用程序 2 正常工作,但我如何也安装 php 版本 5.4.10,并配置 app1 以使用 php 版本 5.4.10?步骤是什么?

如果这个问题看起来很愚蠢,请原谅我,我或多或少对 Linux 很陌生。我无法找到可靠且最新的教程来解释如何完成此操作。

答案1

您可以尝试使用 docker 来执行此操作,但您可能需要先将其安装在您的计算机上。那么你可以尝试

sudo docker run --name=myphp5 -p 8080:80  -v /var/www/html/:/var/www/html -d eboraas/apache-php

这将下载 eboraas/apache-php docker 镜像并运行一个名为“myphp5”的 docker 容器,其中安装了 apache/php5。 -v 开关会将本地 /var/www/html 目录挂载到容器的 /var/www/html 中,并将在端口 8080 上公开 apache(因此它不会与在 80 上运行的本地 apache 发生冲突)。

您可以通过运行来停止容器

sudo docker stop myphp5

同样,您可以通过运行来启动它

sudo docker start myphp5

要检查所有容器的状态,您可以运行

docker ps -a

请注意,dockerhub 上还有其他带有 apache/php5 的镜像,您可以将其用于此目的 -https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=php5&starCount=0

这种方法的唯一限制是每个 docker 容器都需要在不同的端口上公开 http,因此您不能让它们在 80 上运行。但是,可以通过使用本地 apache(侦听端口 80 的端口)作为解决方案来解决这个问题。基于 docker 的 apache 的反向代理。

答案2

软件合集是理想的选择。官方描述说:

软件集合允许您在系统上同时安装相同软件组件的多个版本。使用软件集合构建的软件包不会覆盖 Red Hat Enterprise Linux 中包含的版本。

当前版本 RHSCL 2.3 提供 PHP 5.6 和 7.0 的软件包。请参阅安装RHSCL 发行说明一章,了解如何访问 RHSCL 存储库并安装软件包。

Apache 具有各种 PHP 版本,使用 SCL有关如何在一台 Apache 服务器上使用不同已安装的 SCL 版本的 PHP 的说明,请访问 RH 开发人员博客。 (请注意,这些说明假设使用的是 RHEL6,但相同的方法也适用于 RHEL7——只需跳过安装建议。)

相关内容