杉哥的个人博客

配置lnmp环境

安装就略过了,主要写配置。

先解释几个词:

CGI:common gateway interface 通用网关协议

即是一个通信的协议,也是指的一个实现了该协议的进程。主要是用于web服务器和其他服务进程通信的一个机制。

faste-CGI:即是协议,也是对应进程名称

但是当web服务器和其他服务进程通信的时候,每一次都要创建CGI进程,完成请求后,都要销毁CGI进程。每次的开销实在太大,则有人就想到在通信完毕后,不要销毁CGI进程,这种机制被称为fast-cgi。为了规范这种机制出现了fast-cgi协议。

fpm 是一种管理的机制,可以理解成是一种协议

当web服务器和其他的进程使用fast-cgi进程通信之后,对应fast-cgi这个进程没有一种很好的管理机制(例如接收多少个请求之后,进行销毁,然后在启一个新的fast-cgi进程,例如一下启动多少个fast-cgi进程),这种需要一种优秀的管理机制,这种机制被称为fpm(fastcgi process manager)

php-fpm 是实现了fpm的一种机制,也是一个进程

如果是PHP这边实现了fpm机制,则被称为php-fpm。

复制配置文件

cp php-fpm.conf.default php-fpm.conf

配置nginx支持php

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
       # 解释:当Nginx服务器遇到以.php结尾的文件,则使用如下的配置信息里面的进程进行处理
       location ~ \.php$ {
           root           html; # 网站根目录相对于Nginx的安装目录
           fastcgi_pass   127.0.0.1:9000; # fast-cgi进程的IP和端口 PHP-fpm进程监听
           fastcgi_index  index.php; # 默认动态请求的首页文件名称
           fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name; # 对于Nginx传递给php-fpm的脚本信息,例如脚本的名称
           include        fastcgi_params; # 包含了所以fast-cgi进程通信时候的参数
       }

 

启动nginx和PHP

 

www.example.com
        |
        |
      Nginx
        |
        |
路由到www.example.com/index.php
        |
        |
加载nginx的fast-cgi模块
        |
        |
fast-cgi监听127.0.0.1:9000地址
        |
        |
www.example.com/index.php请求到达127.0.0.1:9000
        |
        |
php-fpm 监听127.0.0.1:9000
        |
        |
php-fpm 接收到请求,启用worker进程处理请求
        |
        |
php-fpm 处理完请求,返回给nginx
        |
        |
nginx将结果通过http返回给浏览器