![如何在redhat上安装多个版本的php](https://linux22.com/image/109596/%E5%A6%82%E4%BD%95%E5%9C%A8redhat%E4%B8%8A%E5%AE%89%E8%A3%85%E5%A4%9A%E4%B8%AA%E7%89%88%E6%9C%AC%E7%9A%84php.png)
我们有一个旧版 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——只需跳过安装建议。)