通常,网络托管管理器为每个 PHP 版本应用程序部署使用单独的服务器。这增加了托管成本。或者,您可以运行多个Docker多个 PHP 版本的容器。
本教程帮助您在具有不同 PHP 版本的 Nginx Web 服务器上安装和配置两个 VirtualHost。第一个 VirtualHost 将与 PHP 5.6 一起运行,另一个 VirtualHost 将与 PHP 7.2 一起运行。因此,只需完成本教程即可。您还可以根据需要将两个以上的 PHP 版本与 Nginx 一起使用,但本教程仅涵盖两个。
PHP安装
对于PHP版本的安装,我们使用这里维护的PPA。使用以下几个命令将 PPA 添加到您的系统。
sudo apt install python-software-properties
sudo add-apt-repository ppa:ondrej/php
在本教程中,我使用 PHP 5.6 和 PHP 7.2 来配置 Nginx Web 服务器。要使用多个 PHP 版本,我们将使用 PHP FPM 和 FastCGI。让我们在您的系统上安装以下软件包。
apt update
sudo apt install php5.6 php5.6-fpm
sudo apt install php7.2 php7.2-fpm
您可能还需要安装其他 PHP 模块。对于本教程,仅需要上述包。
安装完成后,php-fpm服务会自动启动。使用以下命令确保这两个服务正在运行。
sudo systemctl status php5.6-fpm
sudo systemctl status php7.2-fpm
- 受到推崇的:如何在 Ubuntu 上启用/禁用 PHP 模块
Nginx 安装
Nginx Web 服务器软件包可在官方 Ubuntu 存储库中找到。在您的系统上启动终端或使用 ssh 登录远程系统。执行以下命令来安装 Nginx Web 服务器的最新可用版本。
sudo apt update
sudo apt install nginx
Nginx 配置
准备好在 Nginx 服务器中配置网站。出于测试目的,我配置了两个网站以使用两个不同的 2 PHP 版本。首先,在服务器上创建两个目录。
sudo mkdir /var/www/php56
sudo mkdir /var/www/php72
现在,创建并索引.php含有phpinfo()功能。
echo "<?php phpinfo(); ?>" > /var/www/php56/index.php
echo "<?php phpinfo(); ?>" > /var/www/php72/index.php
之后,在 Nginx 上为两个站点创建服务器块。最新版本的 Nginx 将服务器块配置文件保留在 /etc/nginx/sites-available 目录下。为第一个虚拟主机创建一个文件,并在您喜欢的文本编辑器中进行编辑。
sudo vim /etc/nginx/sites-available/php56.example.com
添加以下内容。确保根据您的设置使用正确的服务器名称和目录路径。该网站配置为使用 PHP 5.6。
# Application with PHP 5.6
#
server {
listen 80;
root /var/www/php56;
index index.php;
server_name php56.example.com;
location ~* \.php$ {
# With php-fpm unix sockets
fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
同样,创建第二个 VirtualHost 配置文件以使用 PHP 7.2。在文本编辑器中编辑配置文件:
sudo vim /etc/nginx/sites-available/php72.example.com
使用正确的 ServerName 和 DocumentRoot 将以下内容添加到文件中。
# Application with PHP 7.2
#
server {
listen 80;
root /var/www/php72;
index index.php;
server_name php72.example.com;
location ~* \.php$ {
# With php-fpm unix sockets
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
好吧,您已经在 Nginx 中创建了两个网站。但他们仍然不活跃。 Nginx 将活动站点保存在 /etc/nignx/sites-enabled 目录下。您可以简单地将两个配置文件创建到此目录的符号链接,或使用以下命令执行相同的操作。
sudo ln -s /etc/nginx/sites-available/php56.example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/php72.example.com /etc/nginx/sites-enabled/
完成所有更改后,重新启动 Nginx 以重新加载新的设置更改。
sudo systemctl restart nginx.service
您的设置现已完成。转到下一步来测试您的设置。
测试设置
全做完了。您可以在您最喜欢的网络浏览器中访问双方。你会看到php56.example.com显示版本PHP 5.6 and php72.example.com正在显示PHP 7.2作为配置。
恭喜,您的系统已准备好托管具有不同 PHP 版本的网站。愉快的主持。