如何在Debian 9上安装Apache的多个PHP版本
通常,主机管理器对每个PHP版本应用程序部署使用单独的系统。
这就增加了托管成本。
一些主机管理器使用Docker在一台服务器上运行多个PHP版本。
本教程将在Debian 9系统上安装Apache的多个PHP版本,而无需切换PHP版本。
本教程介绍了在Apache上使用单独的PHP版本安装和配置两个虚拟主机。
第一个虚拟主机使用PHP 5.6,另一个虚拟主机使用PHP 7.2。
PHP安装
使用以下命令在Debian系统上添加PPA。
sudo apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - echo "deb https://packages.sury.org/php/ <orange>stretch</orange> main" | sudo tee /etc/apt/sources.list.d/php.list
本教程使用PHP 5.6和PHP 7.2来配置Apache web服务器。
为了使用多个PHP版本,我们将使用PHP FPM和FastCGI。
运行以下命令在Debian系统上安装PHP和FPM。
apt update sudo apt install php5.6 php5.6-fpm sudo apt install php7.2 php7.2-fpm
安装完成后,php-fpm服务将自动启动。
使用以下命令确保两个服务都在运行。
sudo systemctl status php5.6-fpm sudo systemctl status php7.2-fpm
Apache安装
从官方存储库安装Apache web服务器。
在系统上启动终端或使用ssh登录远程系统。
执行以下命令安装Apache web服务器的最新可用版本。
sudo apt update sudo apt install apache2 libapache2-mod-fcgid
Apache配置
现在启用Apache中多个PHP版本的配置所需的几个模块。
这些模块是将PHP FPM和FastCGI与Apache server集成所必需的。
sudo a2enmod actions fcgid alias proxy_fcgi
现在为在系统上配置的两个站点在系统上创建两个独立目录。
sudo mkdir /var/www/php56 sudo mkdir /var/www/php72
现在,创建index.php文件。
用于查看和确认虚拟主机使用的PHP版本。
echo "<?php phpinfo(); ?>" > /var/www/php56/index.php echo "<?php phpinfo(); ?>" > /var/www/php72/index.php
Apache将所有虚拟主机配置文件保存在/etc/apache2/site-available下,扩展名为.conf。
为第一个虚拟主机创建一个文件
sudo vim /etc/apache2/sites-available/php56.example.com.conf
<VirtualHost *:80> ServerName php56.example.com DocumentRoot /var/www/php56 <Directory /var/www/php56> 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/php72.example.com.conf
<VirtualHost *:80> ServerName php72.example.com DocumentRoot /var/www/php72 <Directory /var/www/php72> Options -Indexes +FollowSymLinks +MultiViews AllowOverride All Require all granted </Directory> <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" </FilesMatch> </VirtualHost>
使用正确的ServerName和DocumentRoot将以下内容添加到文件中。
你们两个网站现在都配置好了。
但他们还未激活。
Apache将活动站点保存在/etc/apache2/sites-enabled目录下。
你可以简单地创建一个配置文件到这个目录的符号链接,或者执行下面命令。
sudo a2ensite php56.example.com sudo a2ensite php72.example.com
完成所有更改之后,重新启动Apache以使配置生效。
sudo systemctl restart apache2
设置现在已经完成。
进入下一步以测试设置。
测试设置
打开web浏览器并访问这两个站点。http://php72.example.com
http://php56.example.com
我们将看到, php56.example.com显示的是版本 PHP 5.6,而 php72.example.com显示的是 PHP 7.2。