php-fpm的pool

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_fpm

(在之前实验中我之定义了一个pool

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _02

 /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

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _03

修改完配置文件后:

(1)测试配置文件是否正确:

 /usr/local/nginx/sbin/nginx -t

(2)加载一下配置文件:

 /usr/local/nginx/sbin/nginx -s reload

(/etc/init.d/php-fpm reload)

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_fpm_04


怎么使用我们的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;

    }


LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _05

修改完配置文件后:

(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 配置文件

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _06


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脚本哪里执行时间长,它可以定位到具体的行。

实验针对www.conf这个pool文件操作:

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

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_php_07

修改完配置文件后:

(1)测试配置文件是否正确:

 /usr/local/nginx/sbin/nginx -t

(2)加载一下配置文件:

 /usr/local/nginx/sbin/nginx -s reload

(/etc/init.d/php-fpm reload)



查看慢行日志是否已经创建成功:

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _08



测试:

(因为我们的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";?>

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _09

 curl -x127.0.0.1:80 test.com/sleep.php

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_fpm_10

(执行成功)

查看慢行日志是否记录信息:

cat /usr/local/php-fpm/var/log/www-slow.log


(记录了慢行记录)

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_fpm_11



                    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/


LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _12

(定义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

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_php_13


配置错误日志

1.vim /usr/local/php-fpm/etc/php.ini

搜索/display_errors

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _14

2.搜索:

/log_errors =

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_php_15


3.搜索:

error_log = 指定错误日志文件路径

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_php_16

( /usr/local/php-fpm/var/log/php_errors.log)


4.搜索:

error_reporting  定义日志级别

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _17


手动生成错误日志文件,并修改权限777

touch /usr/local/php-fpm/var/log/php_errors.log

chmod 777 /usr/local/php-fpm/var/log/php_errors.log


故意改错open_basedir 做测试:

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _18

重新启动php-fpm服务:/etc/init.d/php-fpm restart

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _19


测试:

 curl -x127.0.0.1:80 test.com/test.php -I

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_慢执 _20


查看错误日志是否有信息:

cat  /usr/local/php-fpm/var/log/php_errors.log

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_fpm_21



                    php-fpm进程管理

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_fpm_22

就是在pool定义的。

LNMP5) php-fpm的pool、慢执行日志、open_basedir、php-fpm进程管理_fpm_23