共计 2373 个字符,预计需要花费 6 分钟才能阅读完成。
fastcgi 安装
这里及以下的 web 服务器都是以 nginx 为例子和说明,php 以 5.3 为例子。
php-fpm
fastcgi 在服务器上会启动多个进程进行解析,这个时候就需要一个 fastcgi 的管理器,管理哪个子进程可以结束,哪个进行应该开启了。
fastcgi 的进程管理器有两种,spawn-fcgi 和 php-fpm。其中的 spawn-fcgi 一般是和 lighttp 配合使用的。而 php-fpm 一般会配合 nginx 来使用。
安装
下载 php 和 php-fpm 源码包
php 下载地址:http://php.net/downloads.php
php-fpm 下载地址:http://php-fpm.org/downloads/
在下载 php-fpm 的时候,需要尽量使 php 版本和 php-fpm 版本一致或者版本差别最小,否则有可能会出现兼容性的问题。
配置安装环境
php 需要下面软件的支持,如果没有安装,请自行安装:
gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel
编译安装 php 和 php-fpm
[root@localhost local]#tar zxvf php-5.2.13.tar.gz
[root@localhost local]#gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1
[root@localhost local]#cd php-5.2.13
[root@localhost php-5.2.13]#./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm
[root@localhost php-5.2.13]#make
[root@localhost php-5.2.13]#make install
[root@localhost php-5.2.13]cp php.ini-dist /usr/local/php/lib/php.ini
配置与优化 php-fpm
php 的配置文件存放在 /usr/local/php/lib/php.ini 中。
而 php-fpm 的配置文件存放在 /usr/local/php/etc/php-fpm.conf 中
其中的几项配置需要注意:
标签 listen_address 是配置 fastcgi 进程监听的 IP 地址以及端口,默认是 127.0.0.1:9000。
<value name="listen_address">127.0.0.1:9000</value>
标签 display_errors 用来设置是否显示 PHP 错误信息,默认是 0,不显示错误信息,设置为 1 可以显示 PHP 错误信息。
<value name="display_errors">0</value>
标签 user 和 group 用于设置运行 FastCGI 进程的用户和用户组。需要注意的是,这里指定的用户和用户组要和 Nginx 配置文件中指定的用户和用户组一致。
<value name="user">nobody</value>
<value name="group">nobody</value>
标签 max_children 用于设置 FastCGI 的进程数。根据官方建议,小于 2GB 内存的服务器,可以只开启 64 个进程,4GB 以上内存的服务器可以开启 200 个进程。也可以根据服务的内存数来估计需要开启多少 fastcgi 进程数。大概一个 fastcgi 进程占 20M 的内存。
<value name="max_children">5</value>
标签 request_terminate_timeout 用于设置 FastCGI 执行脚本的时间。默认是 0s,也就是无限执行下去,这个参数设置好了可以用于保证不会有执行时间过长的 php 阻塞住 fastcgi 进程。
<value name="request_terminate_timeout">s</value>
标签 rlimit_files 用于设置 PHP-FPM 对打开文件描述符的限制,默认值为 1024。这个标签的值必须和 Linux 内核打开文件数关联起来,例如要将此值设置为 65535,就必须在 Linux 命令行执行 ’ulimit -HSn 65536’。
<value name="rlimit_files">1024</value>
标签 max_requests 指明了每个 children 最多处理多少个请求后便会被关闭,默认的设置是 500。
为什么会需要这个参数设置呢?php 和 fastcgi 都是 C 写的,一些 php 模块什么的有可能实际上存在着内存泄露等问题,所以一般 php 作为守护进程一直执行是不大可取的行为。既然 php 有可能有内存泄露的问题,那么如果 fastcgi 进程一直执行着,那么就有可能导致机器的内存出现吃爆的现象。所以在执行一段时间之后,我们是希望 fastcgi 能自动重启动。这个参数就是做这个用的。
<value name="max_requests">500</value>
标签 allowed_clients 用于设置允许访问 FastCGI 进程解析器的 IP 地址。如果不在这里指定 IP 地址,Nginx 转发过来的 PHP 解析请求将无法被接受。
<value name="allowed_clients">127.0.0.1</value>
启动 php-fpm
/usr/local/php/sbin/php-fpm start
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-01/139816.htm