PHP与PHP-FPM的配置与优化

时间:2022-10-14 13:11:34

配置与优化PHP-FPM

PHP的全局配置文件是php.ini,在上面的步骤中,已经将此文件复制到了/usr/local/php/lib/php.ini下。可以根据每个应用需求的不同,对php.ini进行相应的配置。

下面重点介绍PHP-FPM引擎的配置文件

根据上面指定的安装路径,PHP-FPM的默认配置文件为/usr/local/php/etc/php-fpm.conf。

php-fpm.conf是一个XML格式的纯文本文件,其内容很容易看明白。这里重点介绍几个重要的配置标签。

标签listen_address是配置FastCGI进程监听的IP地址以及端口,默认是127.0.0.1:9000。

注:配置的格式各个版本可能有所不同,但是意义是一样的,主要看name的值。

 
 
  1. <value name="listen_address">127.0.0.1:9000</value> 

标签display_errors用来设置是否显示PHP错误信息,默认是0,不显示错误信息,设置为1可以显示PHP错误信息。
 
 
  1. <value name="display_errors">0</value> 

标签user和group用于设置运行FastCGI进程的用户和用户组。需要注意的是,这里指定的用户和用户组要和Nginx配置文件中指定的用户和用户组一致。
 
 
  1. <value name="user">nobody</value> 
  2. <value name="group">nobody</value> 

标签max_children用于设置FastCGI的进程数。根据官方建议,小于2GB内存的服务器,可以只开启64个进程,4GB以上内存的服务器可以开启200个进程。
 
 
  1. <value name="max_children">5</value> 

标签request_terminate_timeout用于设置FastCGI执行脚本的时间。默认是0秒,也就是无限地执行下去,可以根据情况对其进行修改。
 
 
  1. <value name="request_terminate_timeout">0s</val
  2. ue> 


标签rlimit_files用于设置PHP-FPM对打开文件描述符的限制,默认值为1024。这个标签的值必须和Linux内核打开文件数关联起来,例如,要将此值设置为65 535,就必须在Linux命令行执行“ulimit -HSn 65536”。

   
   
  1. <value name="rlimit_files">1024</value> 

标签max_requests指明了每个children最多处理多少个请求后便会被关闭,默认的设置是500。
   
   
  1. <value name="max_requests">500</value> 

标签allowed_clients用于设置允许访问FastCGI进程解析器的IP地址。如果不在这里指定IP地址,将无法接受Nginx转发过来的PHP解析请求。(可以设置多个监听地址)
   
   
  1. <value name="allowed_clients">127.0.0.1</value> 

5.管理FastCGI进程

在配置完PHP_FPM后,就可以启动FastCGI进程了。启动FastCGI进程有以下两种方式:

   
   
  1. /usr/local/php/bin/php-cgi --fpm 

或者
   
   
  1. /usr/local/php/sbin/php-fpm  start 

建议采用第二种方式启动FastCGI进程。

/usr/local/php/sbin/php-fpm还有其他参数,具体为start|stop|quit|restart|reload|logrotate。

每个启动参数的含义如下:

start,启动PHP的FastCGI进程。

stop,强制终止PHP的FastCGI进程。

quit,平滑终止PHP的FastCGI进程。

restart, 重启PHP的FastCGI进程。

reload, 重新加载PHP的php.ini。

logrotate, 重新启用log文件。

可以reload是个很重要的参数,它在PHP的FastCGI进程不中断的情况下重新加载改动过的php.ini,因此通过PHP_FPM可以平滑地变更FastCGI模式下的PHP设置。

在FastCGI进程启动后,其监听的IP地址和端口也随即启动,可以通过ps和netstat查看相关信息。

   
   
  1. [root@localhost php]# netstat -antl|grep 9000  
  2. tcp        0       0 127.0.0.1:9000              0.0.0.0:*                   LISTEN  
  3. [root@localhost php]# ps -ef|grep php-cgi  
  4. root       3567       1      0  17:06 ?            00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  5. nobody    3568  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  6. nobody    3569  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  7. nobody    3570  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  8. nobody    3571  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  9. nobody    3572  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  10. root      3583  3524  0 17:09 pts/1    00:00:00 grep php-cgi