站点图标 web安全学习者的小窝

LNMP建站教程(2):安装 PHP 7.1 与 PHP7.1-FPM以及与Nginx集成

Nginx 和 PHP 是两个独立的程序,它们之间在正常的情况系是没有任何关系的,但是我们又希望 Nginx 在收到 PHP 的动态请求时,可以将请求发送到 PHP的解析器并将结果返回给用户的浏览器。那么就需要有一个通用的交互协议来处理它们间的交互流程,这个协议就叫 FastCGI协议。

当 Nginx 碰到需要 PHP 处理的请求后,都会通过 FastCGI 协议传递到 PHP 的 FastCGI 解析器上,然后会由这个解析器来执行这个请求,并将结果返回给 Nginx,再由 Nginx 将结果返回给用户的浏览器。那么在执行这个 FastCGI 协议的时候,就需要一个进程来解析这个协议并且调用 PHP FastCGI 解析器 ,这个进程就叫 php-fpm(php-fastcgi process manager) 。

HP-FPM 与 Nginx 通信方式有两种,一种是基于TCP的 Internet domain socket 方式,一种是 UNIX domain socket 方式。

UNIX domain socket 可以使同一台操作系统上的两个或多个进程进行数据通信。UNIX domain socket 的接口和 Internet domain socket 很像,但它不使用网络底层协议来通信。

服务器压力不大的情况下,这两种方式性能差别不大,但在压力比较满的时候,用UNIX domain socket方式,效果确实比较好。

安装php与php-fpm

直接运行 sudo apt-get命令安装 PHP 会报错误

E: Unable to locate package php7.1
E: Couldn't find any package by regex 'php7.1'

原因是 PHP7 等并不在 Ubuntu的软件库中,因此要使用 PPA ppa:ondrej/php 库

使用下列命令:

sudo apt-add-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.1 php7.1-fpm

PHP7.1-FPM以及与Nginx集成
修改Nginx配置

vim /etc/nginx/sites-available/default

打开后是这样的:

我们需要做如下修改:
1.添加index.php作为我们的起始页面;
2.修改server_name来指向我们的域名或者是公网IP;
改后是这样的

验证配置文件有没有错误:

nginx -t

如果提示OK则说明配置搞定:

重启Nginx:

/etc/init.d/nginx restart

测试PHP与Nginx有没有集成成功
添加一个info.php:

vim /var/www/html/info.php

内容为:

<?php 
phpinfo();
?>

访问http://xx.xx.xx.xx/info.php(或者是你的域名),如下图所示则说明全部安装成功

配置好后重启服务:

/etc/init.d/nginx restart 
/etc/init.d/php7.1-fpm restart

PS:/etc/nginx/sites-available/default与/etc/php/7.1/fpm/pool.d/www.conf中监听同一个 sock。也就是如图所示的要一致。


如果不一致就会出现如图所示的问题

退出移动版