安装就略过了,主要写配置。
先解释几个词:
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返回给浏览器