我們有一個舊版 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——只需跳過安裝建議。)