Nginx安装配置详解(2)

2.  安装php的php-fpmn

装php5.3.5

./configure  --prefix=/usr/local/php  -enable-fpm

make;make install;

这里最重要的是--enable-fpm。因为默认情况下Nginx和PHP他俩之间是一点感觉没有的。在之前,很多朋友都搭建过Apache+PHP,Apache+PHP编译后生成的是模块文件,而Nginx+PHP需要PHP生成可执行文件才可以,所以要利用fastcgi技术来实现N ginx与PHP的整合,这个只要我们安装是启用FastCGI即可。此次我们安装PHP不仅使用了FastCGI,而且还使用了PHP-FPM这么一个东东,PHP-FPM说白了是一个管理FastCGI的一个管理器,它作为PHP的插件纯在,在安装PHP要想使用PHP-FPM时在老php的老版本就需要把PHP-FPM以补丁的形式安装到PHP中,而且PHP要与PHP-FPM版本一致,这是必须的)

PHP-FPM是一个PHP FastCGI管理器(php-FastCGI Process Manager),是只用于PHP的。
  PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
  相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。
  PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。


      fastcgi已经在php5.3.5的core中了,不必再configure时--enable-fastcgi了。老版本的需要加,比如5.2。

php-fpm进行启动:/usr/local/php/sbin/php-fpm


需要配置php/etc/php-fpm.conf:

listen_address  127.0.0.1:9000 #这个表示php的fastcgi进程监听的ip地址以及端口
user=nobody 表示php的fastcgi进程以什么用户以来运行,默认该行是注释掉的,需要打开
group=nobody  表示php的fastcgi进程以什么用户组来运行,默认该行是注释掉的,需要打开
display_errors  0  是否显示php错误信息
max_children 5  最大的子进程数目

启动错误:m.min_spare_servers(0) must be a positive value 。
编辑php-fpm.conf找到pm.min_spare_server ;pm.min_spare_servers = 5 去除";"号
也可使用sed -i 's/;pm.min_spare_servers/pm.min_spare_servers/g' /usr/local/php/etc/php-fpm.conf 进行替换


提示错误:Nov 20 17:57:14.210553 [ALERT] [pool www] pm.max_spare_servers(0) must be a positive value
编辑php-fpm.conf找到pm.max_spare_servers = 35 和pm.min_spare_servers = 5 去除";"号

提示错误:Nov 20 17:58:55.248268 [WARNING] [pool www] pm.start_servers is not set. It's been set to 20
编辑php-fpm.conf找到 pm.start_servers = 20去除";"号
启动成功。

启用 php-fpm 的 slow log 日志:

启用 php-fpm 的 slow log 日志,查看执行时间过长的php文件,并将执行时间过长的进程直接终止掉!看看效果如何!

具体操作方法也简单,就修改一个文件,执行命令:# vi /usr/local/php/etc/php-fpm.conf  如果在这个php-fpm.conf 文件找不到 可以再/etc/php-fpm.d/www.conf 文件里面找


PHP 5.3.3 之前版本设置如下:

The timeout (in seconds) for serving a single request after which the worker process will be terminated      Should be used when 'max_execution_time' ini option does not stop script execution for some reason      '0s' means 'off'     
 request_terminate_timeout">10s   
  The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file      '0s' means 'off'     
 request_slowlog_timeout">1s 
    The log file for slow requests     
 logs/slow.logPHP 5.3.3 之后版本设置如下:

; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0 request_slowlog_timeout = 1s
; The log file for slow requests
; Default Value: /usr/local/php/log/php-fpm.log.slow slowlog = /usr/local/php/log/php-fpm.log.slow ; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) ; Default Value: 0 request_terminate_timeout = 10s注:request_terminate_timeout 将执行时间太长的进程直接终止

request_slowlog_timeout 将执行过慢的文件写入日志

以后即可根据慢执行日志 /usr/local/php/logs/slow.log 来优化程序文件了!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/0286b005d94b1108dc60427ee998eb40.html