通常主機管理器為每個PHP版本應用程序部署使用單獨的服務器。這增加了托管成本。一些主機管理器正在使用Docker在單個服務器上運行多個PHP版本。另外,你們中大多數人都知道我在本教程中使用的配置。但是某些系統管理員對此並不了解。本教程將幫助您在Ubuntu 20.04 Linux系統上使用Apache 安裝多個PHP版本,而無需切換PHP版本。
本教程介紹了具有單獨PHP版本的Apache上兩個VirtualHost的安裝和配置。第一個VirtualHost將與PHP 5.6一起使用,另一個VirtualHost將與PHP 7.2一起運行。因此,只需閱讀本教程即可。您也可以根據需要在Apache上使用兩個以上的PHP版本,但是本教程僅涉及兩個。
1、安裝Apache
Apache Web服務器軟件包在默認存儲庫中可用。在Ubuntu系統上打開一個終端,然后執行以下命令來安裝Apache Web服務器的最新可用版本。
sudo apt update
sudo apt install apache2 libapache2-mod-fcgid
2、安裝PHP
長期以來,一直為在Ubuntu系統上安裝PHP維護PPA。您只需要將該PPA添加到系統中即可安裝軟件包。使用以下幾個命令將PPA添加到系統中。
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
在本教程中,我們使用PHP 5.6和PHP 7.4來配置Apache Web服務器。要使用多個PHP版本,我們將使用PHP FPM和FastCGI。讓我們在系統上安裝以下軟件包。
sudo apt update -y
sudo apt install php5.6 php5.6-fpm -y
sudo apt install php7.4 php7.4-fpm -y
安裝后,php-fpm服務將自動啟動。使用以下命令確保兩個服務都在運行。
sudo systemctl status php5.6-fpm
sudo systemctl status php7.4-fpm
3、使用多個PHP配置Apache
現在啟用與Apache一起配置多個PHP版本所需的幾個模塊。這些模塊是將PHP FPM和FastCGI與Apache服務器集成所必需的。
sudo a2enmod actions fcgid alias proxy_fcgi
准備在Apache服務器上配置網站。為了進行測試,我正在配置兩個網站以使用兩個不同的2個PHP版本。首先,在服務器上創建兩個目錄。
sudo mkdir /var/www/php56-app
sudo mkdir /var/www/php74-app
現在,創建並包含phpinfo();函數的index.php 。
echo “<?php phpinfo(); ?>” > /var/www/php56-app/index.php
echo “<?php phpinfo(); ?>” > /var/www/php74-app/index.php
讓我們開始創建VirtualHost。Apache將所有VirtualHost配置文件保留在/ etc / apache2 / sites下(擴展名為.conf)。為第一個虛擬主機創建一個文件,然后在您喜歡的文本編輯器中進行編輯。
sudo vim /etc/apache2/sites-available/php56.example.com.conf
添加以下內容。確保根據您的設置使用正確的ServerName和目錄路徑。該網站配置為可與PHP 5.6一起使用。
<VirtualHost *:80> ServerName php56.example.com DocumentRoot /var/www/php56-app <Directory /var/www/php56-app> Options -Indexes +FollowSymLinks +MultiViews AllowOverride All Require all granted </Directory> <FilesMatch \.php$> # Apache 2.4.10+ can proxy to unix socket SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost" </FilesMatch> </VirtualHost>
同樣,創建第二個VirtualHost配置文件以與PHP 7.2一起使用。在文本編輯器中編輯配置文件:
sudo vim /etc/apache2/sites-available/php74.example.com.conf
將以下內容添加到具有正確的ServerName和DocumentRoot的文件中。
<VirtualHost *:80> ServerName php74.example.com DocumentRoot /var/www/php74-app <Directory /var/www/php74-app> Options -Indexes +FollowSymLinks +MultiViews AllowOverride All Require all granted </Directory> <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost" </FilesMatch> </VirtualHost>
你們兩個網站都已配置。但是他們仍然不活躍。Apache將活動站點保留在/etc/apache2/sites-enabled目錄下。您可以簡單地創建到該目錄的配置文件的符號鏈接,或使用下面的命令執行相同的操作。
開啟站點
sudo a2ensite php56.example.com
sudo a2ensite php74.example.com
開閉站點 sudo a2dissite php56.example.com
完成所有更改后,重新啟動Apache以重新加載新的設置更改。
sudo systemctl restart apache2
您的設置現已完成。轉到下一步以測試您的設置。
4、測試您的設置
在本地系統上編輯/ etc/hosts文件,然后輸入如下內容。這會將臨時名稱解析為本地主機IP地址。
sudo vim /etc/hosts
將以下條目添加到文件末尾
127.0.0.1 php74.example.com
127.0.0.1 php56.example.com
打開網絡瀏覽器並訪問兩個站點。你會看到,php56.example.com顯示版本PHP 5.6和php74.example.com正顯示出PHP 7.4的配置。
http://php74.example.com。
http://php56.example.com。
本教程可幫助您在Ubuntu 20.04系統上的單個Apache服務器上設置具有不同2 PHP版本的多個網站。
安裝PHP模塊
您可能還需要根據應用程序要求安裝模塊。使用以下命令在軟件包存儲庫中搜索可用的PHP 7模塊。
sudo apt-cache search php7*
您可以在系統上安裝所需的PHP模塊。只需根據您的要求使用軟件包名稱更改PHP版本:
sudo apt install php7.4-mysql php7.4-curl php7.4-json php7.4-cgi php7.4-xsl
切換PHP版本
update-alternatives --display php 查看所有 php 版本和當前版本
您可以使用update-alternatives命令設置默認的PHP版本。
update-alternatives --config php
根據您的要求選擇PHP版本號。這只會更改PHP CLI版本。
本教程可幫助您在Ubuntu系統上安裝PHP 7.4、7.3、7.2或PHP 5.6。