LNMP是指使用Linux、Nginx、MySQL、PHP构建的Web服务器环境,目前已成为Web开发的重要基础设施。在LNMP环境下,PHP是作为Nginx的FastCGI进程运行的,这种方式会带来一些问题,比如PHP版本的切换、模块的安装等等。因此,为了解决这些问题,我们可以配置LNMP多PHP环境,下面我们就详细了解一下。
在LNMP多PHP环境下,我们需要安装多个PHP版本并运行在不同的端口上,例如PHP5.6、PHP7.0、PHP7.1分别运行在端口9000、9001、9002上。这样我们就可以在Nginx的Virtual Host配置中指定不同的PHP版本,从而达到一台服务器多PHP版本的效果。
下面以CentOS7为例,介绍如何在LNMP环境下配置多PHP版本。首先我们需要安装与Nginx对应的FastCGI组件,这里我们使用php-fpm:
yum install php-fpm
然后我们需要配置多个PHP版本的安装源,以PHP7.0为例:sudo yum install epel-release
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
sudo yum install php70w php70w-fpm
安装完成后,我们需要在/etc目录下创建php-fpm的配置文件,以PHP7.0为例:cd /etc/php-fpm.d/
cp www.conf www70.conf
然后在www70.conf中指定运行在端口9001上:[www70]
listen = 127.0.0.1:9001
同样的方式配置PHP5.6和PHP7.1的环境,最终目录结构如下:/etc/php-fpm.d/
├── www56.conf
├── www70.conf
└── www71.conf
在Nginx的Virtual Host配置中指定不同的PHP版本,例如:server {
listen 80;
server_name example.com;
root /home/example.com;
location / {
index index.html index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name php56.example.com;
root /home/php56.example.com;
location / {
index index.html index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name php71.example.com;
root /home/php71.example.com;
location / {
index index.html index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9002;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
最后,重启Nginx和PHP-FPM,并测试多PHP版本是否正常。
LNMP多PHP环境的优点显而易见,可以同时支持多个PHP应用以及不同版本的框架和CMS,提高了服务器的利用率和灵活性,让Web开发更加便捷。