php-fpm的pool是这个php-fpm服务的池子,php-fpm支持定义多个池子,可以监听多个不一样的sock或者监听不一样的ip。若是Nginx上跑了几个站点,每一个站点均可以配置一个pool,当其中一个站点的php报502或者其余错误了,那么其余的站点就不会受到影响。若是所有站点都使用同一个pool的话,当其中一个php出问题了,那么所有的站点都会瘫掉,因此须要每一个站点配置一个pool,把这些站点都隔离开来。php
配置pool能够在php-fpm的主配置文件里进行配置:nginx
vim /usr/local/php-fpm/etc/php-fpm.confvim
在配置文件中增长以下内容: [aming.com] listen = /tmp/test.sock #listen = 127.0.0.1:9000 listen.mode = 666 user = php-fpm group = php-fpm pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024
而后测试一下有没有语法错误,没问题的话就重启:bash
[root@aming-01 etc]# /usr/local/php-fpm/sbin/php-fpm -t [02-May-2018 23:25:33] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful [root@aming-01 etc]# /etc/init.d/php-fpm reload
这时候查看一下php-fpm进程会发现多了一个pool,也就是咱们刚刚配置的那个aming.com:架构
查看进程:ps aux |grep php-fpm框架
而后在虚拟主机配置文件里配置这个pool:运维
vim /usr/local/nginx/conf/vhost/aaa.com.confcurl
增长以下内容:php-fpm
location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/aming.sock; #fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwroot/aming.com$fastcgi_script_name; }
配置完成实例:测试
把pool都配置在主配置文件里感受比较乱,咱们能够把这些pool都分离到一个个文件中,首先在php-fpm主配置文件里的[global]部分加上如下内容:
include = etc/php-fpm.d/*.conf
接着建立一个php-fpm.d目录:
mkdir /usr/local/php-fpm/etc/php-fpm.d/
进入到该目录下:
cd /usr/local/php-fpm/etc/php-fpm.d/
建立一个www.conf文件:
vim www.conf
而后复制php-fpm主配置文件里www的那个pool内容,粘贴到这个www.conf文件中:
接着再建立一个test.conf,一样的也是复制粘贴php-fpm主配置文件里aming.com的那个pool内容:
这时就能够把php-fpm主配置文件里的pool都删了。
#配置文件 [www] listen = /tmp/php-fcgi.sock #listen = 127.0.0.1:9000 listen.mode = 666 user = php-fpm group = php-fpm pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024 [aming.com] listen = /tmp/aming.sock #listen = 127.0.0.1:9000 listen.mode = 666 user = php-fpm group = php-fpm pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024
这样把pool分离出来后,php-fpm主配置文件里就干净多了,不必把pool配置在主配置文件里,只须要在里面用include引入便可。
记得配置完后,检测一下语法有没有错误,以上就是如何配置pool的简单介绍。
检查语法和重启:
php-fpm的慢执行日志是一个颇有用的东西,若是须要作php的网站,建议使用lnmp架构,由于咱们能够去分析php-fpm的慢执行日志,在运维的平常工做当中常常会遇到一个让人头疼的问题,那就是你的老板或者你的客户常常会反馈网站的访问速度变慢了,因此咱们得知道访问慢的根本缘由,才能去解决这个访问慢的问题。若是是php网站,就能够经过慢执行日志去分析缘由,因此才说php-fpm的慢执行日志是一个颇有用的东西。
下面用示例介绍一下如何配置慢执行日志:
编辑www.conf文件:
vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
增长如下内容: request_slowlog_timeout = 1 slowlog = /usr/local/php-fpm/var/log/www-slow.log
修改完成够,测试一下语法,并从新加载配置文件:
[root@aming-01 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t #检测语法是否有错误 [02-May-2018 23:56:48] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful [root@aming-01 php-fpm.d]# /etc/init.d/php-fpm reload #重启php-fpm服务 Reload service php-fpm done
而后查看一下是否有生成日志文件,这个时候日志文件是空的:
接下来咱们来模拟一个慢执行的php,须要写一个脚本:
vim /data/wwwroot/test.com/sleep.php
脚本内容以下:
<?php echo "test slow log"; sleep(2); echo "done"; ?>
使用curl对这个脚本进行访问:
访问完以后查看慢执行日志,这个日志告诉了咱们如下信息:
如今咱们打开sleep.php看一看:
因此这就是慢执行日志的做用,可以帮咱们记录访问慢的缘由。不过通常正常状况下定义为2秒才记录日志会比较好,由于不少的脚本执行因为硬件或框架的缘由,都会致使执行时间超过1秒。
以前在Apache里介绍过open_basedir的做用了,这里就不过多介绍了,只介绍一下在Nginx中的配置过程。
编辑配置文件:
vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
加入如下内容:
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
保存退出后从新加载配置文件,而后使用curl进行访问,可以正常访问就没问题:
curl -x127.0.0.1:80 test.com/sleep.php -I
定义php-fpm的错误日志:
vim /usr/local/php-fpm/etc/php.ini
搜索:error_log
而后在error_log下面指定错误日志存放路径:
定义日志级别
搜索:error_reporting
保存退出后,修改pool文件,故意改错,测试一下是否会记录错误日志:
而后建立错误日志文件,而且修改此文件的权限为777:
重启php-fpm服务:
进行访问,能够看到报了404错误:
如今就能够去看看日志文件里是否有记录这条错误信息:
cat /usr/local/php-fpm/var/log/php_errors.log
而后咱们把pool文件修改正确,再次重启php-fpm,接着再进行访问,状态码为200就没问题了:
关于static和dynamic 的一些区别:
Static:
这些进程的数量都是能够自定义的。
个人博客即将搬运同步至腾讯云+社区,邀请你们一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1gd4fdbso9x7k