php-fpm的pool
(在之前实验中我之定义了一个pool
/usr/loacl/php-fpm/etc/php-fpm.conf
)
Nginx中可以定义多个虚拟主机,也可以定义多个pool,每个pool可以监听一个端口,也可以监听一个socket。
因此在Nginx中如果有多个站点,则每个站点可以使用一个pool,这样就可以避免单独的一个站点耗尽php资源导致其他站点也访问有误。
定义多个pool:
cd /usr/local/php-fpm/etc/php-fpm.conf
添加多一个pool
修改完配置文件后:
(1)测试配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
(2)加载一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
怎么使用我们的pool
cd /usr/local/nginx/conf/vhost/
进入到虚拟主机配置文件,站点的配置文件:
针对
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
}
修改完配置文件后:
(1)测试配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
把/usr/local/php-fpm/etc/php-fpm.conf 配置文件中配置的pool拆分到
单独的一个文件,只需在此配置文件中使用:include = etc/php-fpm.d/*.conf
再创建相应的目录把拆分的pool放置该目录下就可以include到配置文件中。
mkdir /usr/local/php/etc/php-fpm.d/
1.修改/usr/local/php-fpm/etc/php-fpm.conf 配置文件
2.创建目录:mkdir /usr/local/php-fpm/etc/php-fpm.d/
3.创建相应pool文件
vim www.conf
[www]
#listen =127.0.0.1:9000
listen = /tmp/php-fcgi.sock
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
vim cansheng.conf
[cansheng.com]
#listen =127.0.0.1:9000
listen = /tmp/cansheng.sock
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
修改完配置文件后:
(1)测试配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
(2)加载一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
php-fpm慢执行日志
(很实用)
php-fpm慢执行日志可以帮助我们快速地追踪到问题,清晰的了解到php脚本哪里执行时间长,它可以定位到具体的行。
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
修改完配置文件后:
(1)测试配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
(2)加载一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
查看慢行日志是否已经创建成功:
测试:
(因为我们的www.conf这个pool文件监听的是 /tmp/php-fcgi.sock,
而/usr/local/nginx/conf/vhost/test.com.conf这个虚拟主机配置文件就是引用 /tmp/php-fcgi.sock文件,且是/data/wwwroot/test.com这个站点。
)
所以在/data/wwwroot/test.com站点下创建测试脚本:
vim sleep.php
添加内容
<?php echo "test slow log";sleep(2);echo "done";?>
curl -x127.0.0.1:80 test.com/sleep.php
(执行成功)
查看慢行日志是否记录信息:
cat /usr/local/php-fpm/var/log/www-slow.log
(记录了慢行记录)
open_basedir
(open_basedir的目的是安全。httpd可以针对每个虚拟主机设置一个
open_basedir;php-fpm针对每个包不同的pool设置不同的open_basedir)
open_basedir 的作用是限制php在指定的目录里活动。
nginx添加open_basedir
(针对www.conf的pool文件实验/usr/local/php-fpm/etc/php-fpm.d/www.conf)
vim /usr/local/php-fpm/etc/php-fpm.d/www.conf 添加内容:
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
(定义open_basedir的路径一定要和引用该pool文件的虚拟主机配置文件的站点路劲一致)
修改完配置文件后:
(1)测试配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
(2)加载一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
测试:
curl -x127.0.0.1:80 test.com/test.php -I
配置错误日志
1.vim /usr/local/php-fpm/etc/php.ini
搜索/display_errors
2.搜索:
/log_errors =
3.搜索:
error_log = 指定错误日志文件路径
( /usr/local/php-fpm/var/log/php_errors.log)
4.搜索:
error_reporting 定义日志级别
手动生成错误日志文件,并修改权限777
touch /usr/local/php-fpm/var/log/php_errors.log
chmod 777 /usr/local/php-fpm/var/log/php_errors.log
故意改错open_basedir 做测试:
重新启动php-fpm服务:/etc/init.d/php-fpm restart
测试:
curl -x127.0.0.1:80 test.com/test.php -I
查看错误日志是否有信息:
cat /usr/local/php-fpm/var/log/php_errors.log
php-fpm进程管理
就是在pool定义的。
原文地址:http://blog.51cto.com/13589255/2091217