如何在Ubuntu 18.04和16.04上安装Nginx和多个版本PHP

时间:2019-05-29 14:48:09  来源:igfitidea点击:

通常,web托管管理器对每个PHP版本应用程序部署使用单独的服务器。
这就增加了托管成本。
或者,我们可以为多个PHP版本运行多个Docker容器。
本教程将安装和配置Nginx web服务器上的两个不同PHP版本的虚拟主机。
第一个虚拟主机使用PHP 5.6,另一个虚拟主机使用PHP 7.2。

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

安装Nginx

Nginx网络服务器包可以在官方Ubuntu资源库中找到。

执行以下命令安装Nginx web服务器的最新可用版本。

sudo apt update 
sudo apt install nginx

Nginx配置

准备在Nginx服务器上配置网站。
出于测试的目的,我配置了两个网站来使用两个不同的PHP版本。
首先,在服务器上创建两个目录。

sudo mkdir /var/www/php56
sudo mkdir /var/www/php72

现在,创建index.php文件。

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

将以下内容添加到文件中。

# 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

设置现在已经完成。
进入下一步以测试设置。

测试设置

在浏览器中访问这两个网站。
http://php72.example.com
http://php56.example.com

我们将看到, php56.example.com显示的是版本 PHP 5.6,而 php72.example.com显示的是 PHP 7.2