怎样在Ubuntu 20.04上使用Apache安装多个PHP版本

主机管理者通常为应用程序部署的每个PHP版本使用单独的服务器。托管费用将增加。一些主机管理器使用Docker在单个服务器上运行多个PHP版本。大多数人也知道本教程中使用的配置。但是,某些系统管理员对此并不了解。对于本教程,您无需使用Apache在PHP版本之间切换即可在Ubuntu 20.04 Linux系统上安装多个PHP版本。

本教程将向您展示如何在Apache中安装两个VirtualHost并使用不同的PHP版本配置它们。第一个VirtualHost使用PHP 5.6,另一个VirtualHost使用PHP 7.2。因此,请执行本教程。如果愿意,可以在Apache上使用两个以上的PHP版本,但是本教程仅涵盖两个。

Apache安装

默认存储库中提供了Apache Web服务器软件包。在Ubuntu系统上打开一个终端,然后运行以下命令以安装Apache Web服务器的最新可用版本。

sudo apt update 
sudo apt install apache2 libapache2-mod-fcgid

PHP安装

PPA已维护多年,可在Ubuntu系统上安装PHP。要安装软件包,只需将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
  • 推荐:如何在Ubuntu中启用/禁用PHP模块

使用多个PHP配置Apache

启用一些模块,以在Apache中配置多个PHP版本。这些模块是将PHP FPM和FastCGI与Apache服务器集成所必需的。

sudo a2enmod actions fcgid alias proxy_fcgi

准备在Apache服务器上配置您的网站。为了进行测试,我将两个网站配置为可以使用两个不同的两个版本的PHP。首先,在服务器上创建两个目录。

sudo mkdir /var/www/php56-app
sudo mkdir /var/www/php74-app

接下来,创建index.php, phpinfo(); 功能。

echo "" > /var/www/php56-app/index.php
echo "" > /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一起使用。

ServerName php56.example.com
DocumentRoot / var / www / php56-app

选项索引+ FollowSymLinks +多视图
允许全部覆盖
所需的所有权限

#Apache 2.4.10+可以代理到Unix套接字
SetHandler“代理:Unix:/var/run/php/php5.6-fpm.sock | fcgi:// localhost

12345678910111213 ServerName php56.example.com DocumentRoot / var / www / php56-app 选项-索引+ FollowSymLinks +多视图AllowOverride全部要求所有已授予 #Apache 2.4.10+可以代理UNIX套接字SetHandler“ proxy:Unix:/var/run/php/php5.6-fpm.sock | fcgi:// localhost”

同样,创建另一个与PHP 7.2一起使用的VirtualHost配置文件。使用文本编辑器编辑配置文件。

sudo vim /etc/apache2/sites-available/php74.example.com.conf

使用适当的ServerName和DocumentRoot将以下内容添加到文件中。

ServerName php72.example.com
DocumentRoot / var / www / php74-app

选项索引+ FollowSymLinks +多视图
允许全部覆盖
所需的所有权限

SetHandler“代理:Unix:/var/run/php/php7.4-fpm.sock | fcgi:// localhost

123456789101112 ServerName php72.example.com DocumentRoot / var / www / php74-app 选项-索引+ FollowSymLinks +多视图AllowOverride全部要求所有已授予 SetHandler“代理:Unix:/var/run/php/php7.4-fpm.sock | fcgi:// localhost

现在,您已经配置了两个网站。但是他们还没有活跃。 Apache将活动站点保留在/ etc / apache2 / sites-enabled目录中。您可以将配置文件符号链接到此目录,也可以使用以下命令进行相同的操作。

sudo a2ensite php56.example.com
sudo a2ensite php74.example.com

完成所有更改后,重新启动Apache以重新加载新的配置更改。

sudo systemctl restart apache2

现在安装完成。继续进行下一步以测试您的设置。

测试设置

在本地系统上编辑/ 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.6php74.example.com 演出 PHP 7.4 作为配置。

http://php74.example.com

http://php56.example.com

在Ubuntu 20.04上使用Apache设置多个PHP

结论

本教程将帮助您在Ubuntu 20.04系统上的单个Apache服务器上使用不同PHP 2版本设置多个网站。