如何在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 上運行。解決這個問題。

答案2

軟體合集是理想的選擇。官方描述說:

軟體集合可讓您在系統上同時安裝相同軟體元件的多個版本。使用軟體集合建構的軟體包不會覆蓋 Red Hat Enterprise Linux 中包含的版本。

目前版本 RHSCL 2.3 提供 PHP 5.6 和 7.0 的軟體包。請參閱安裝RHSCL 發行說明一章,了解如何存取 RHSCL 儲存庫並安裝軟體套件。

Apache 有各種 PHP 版本,使用 SCL有關如何在一台 Apache 伺服器上使用不同已安裝的 SCL 版本的 PHP 的說明,請造訪 RH 開發人員部落格。 (請注意,這些說明假設使用的是 RHEL6,但相同的方法也適用於 RHEL7——只需跳過安裝建議。)

相關內容