给不同的站点分别配置不同的pool
[root@lnmp ~]# ps -ef |grep php
root 3028 3008 0 08:31 pts/3 00:00:00 grep --color=auto php
root 127593 1 0 05:05 ? 00:00:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 127594 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127595 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127596 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127597 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127598 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127599 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127600 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127601 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127602 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127603 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127604 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127605 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127606 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127607 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127608 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127609 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127610 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127611 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127612 127593 0 05:05 ? 00:00:00 php-fpm: pool www
php-fpm 127613 127593 0 05:05 ? 00:00:00 php-fpm: pool www
# 进入配置文件目录
[root@lnmp ~]# cd /usr/local/php-fpm/etc/
# 添加一个pool为123.com
[root@lnmp etc]# vim php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
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
[123.com]
listen = /tmp/123.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
# 检查语法
[root@lnmp etc]# /usr/local/php-fpm/sbin/php-fpm -t
[07-Sep-2021 08:34:26] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
# 重启
[root@lnmp etc]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
# 多了新的pool
[root@lnmp etc]# ps -aux |grep php
root 3040 0.0 0.5 231952 5088 ? Ss 08:35 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 3041 0.0 0.4 231892 4804 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3042 0.0 0.4 231892 4804 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3043 0.0 0.4 231892 4804 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3044 0.0 0.4 231892 4804 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3045 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3046 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3047 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3048 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3049 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3050 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3051 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3052 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3053 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3054 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3055 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3056 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3057 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3058 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3059 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3060 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
php-fpm 3061 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3062 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3063 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3064 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3065 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3066 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3067 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3068 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3069 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3070 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3071 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3072 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3073 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3074 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3075 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3076 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3077 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3078 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3079 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
php-fpm 3080 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
root 3082 0.0 0.0 112824 980 pts/3 R+ 08:35 0:00 grep --color=auto php
[root@lnmp etc]# cd /usr/local/nginx/conf/vhost/
[root@lnmp vhost]# vim default.conf
server
{
listen 80 default_server;
server_name aaa.com;
index index.html index.htm index.php;
root /data/nginx/default;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/123.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/nginx/test.com$fastcgi_script_name;
}
}
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
配置拆分多个pool
[root@lnmp ~]# cd /usr/local/php-fpm/etc/
[root@lnmp etc]# vim php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
include = etc/php-fpm.d/*.conf //添加这个
[root@lnmp php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[07-Sep-2021 09:52:22] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm .
done
Starting php-fpm done
[root@lnmp php-fpm.d]# ls /tmp/*.sock
/tmp/123.sock /tmp/mysql.sock /tmp/php-fcgi.sock
[root@lnmp php-fpm.d]# ps -ef |grep php
root 8265 1 0 09:52 ? 00:00:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 8266 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8267 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8268 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8269 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8270 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8271 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8272 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8273 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8274 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8275 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8276 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8277 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8278 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8279 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8280 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8281 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8282 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8283 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8284 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8285 8265 0 09:52 ? 00:00:00 php-fpm: pool 123.com
php-fpm 8286 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8287 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8288 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8289 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8290 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8291 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8292 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8293 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8294 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8295 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8296 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8297 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8298 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8299 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8300 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8301 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8302 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8303 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8304 8265 0 09:52 ? 00:00:00 php-fpm: pool www
php-fpm 8305 8265 0 09:52 ? 00:00:00 php-fpm: pool www
root 8309 3099 0 09:53 pts/1 00:00:00 grep --color=auto php
php-fpm查看慢执行日志
[root@lnmp php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[07-Sep-2021 09:54:29] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm reload
Reload service php-fpm done
# 测试 写一个慢执行文件
[root@lnmp php-fpm.d]# ls /usr/local/php-fpm/var/log/
php-fpm.log www-slow.log
[root@lnmp php-fpm.d]# vim /data/nginx/test.com/sleep.php
<?php
echo "test slow log";
sleep(2);
echo "done";
?>
# 执行这个脚本的时候可以明显看到慢了一下。
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
test slow logdone
[root@lnmp php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log
[07-Sep-2021 09:56:13] [pool www] pid 8353
script_filename = /data/nginx/test.com/sleep.php
[0x00007fe5caf40288] sleep() /data/nginx/test.com/sleep.php:3
php-fpm定义open_basedir
# 修改配置文件,特意配置为错误路径
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
php_admin_value[open_basedir]=/data/nginx/wwwtest.com:/tmp/ //添加
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
# 测试发现这些PHP文件都无法访问,就是因为php open_basedir做了限制。
[root@lnmp php-fpm.d]# ls /data/nginx/test.com/
1.js 1.jss 2.jpg 3.php admin index.html sleep.php
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 404 Not Found
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:03:17 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 404 Not Found
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:03:48 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
# 把配置文件改为正确的
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
php_admin_value[open_basedir]=/data/nginx/test.com:/tmp/ //修改刚刚添加的
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:06:03 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:06:25 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
配置错误日志
# 配置
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php.ini
# 查找以下修改,至=
display_errors = Off
log_errors = On
error_log = /usr/local/php-fpm/var/log/php_error.log
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL
# 再次将php的配置文件改错
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
php_admin_value[open_basedir]=/data/nginx/wwwtest.com:/tmp/
# 这个日志文件不会自动生成,所以我们自己创建一个,并授权
[root@lnmp php-fpm.d]# touch /usr/local/php-fpm/var/log/php_error.log
[root@lnmp php-fpm.d]# chmod 777 /usr/local/php-fpm/var/log/php_error.log
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:17:24 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:17:53 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
test slow logdone
# 查看错误日志,显示open_basedir限制生效,目录不能访问
cat /usr/local/php-fpm/var/log/php_error.log
# 再次将配置文件修改回来
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
php_admin_value[open_basedir]=/data/nginx/test.com:/tmp/
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:20:45 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:21:01 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
php-fpm进程管理
pm = dynamic //动态进程管理,也可以是static 如果是静态的,会直接启动最大子进程数
pm.max_children = 50 //最大子进程数,ps aux可以查看
pm.start_servers = 20 //启动服务时会启动的进程数
pm.min_spare_servers = 5 //定义在空闲时段,子进程数的最少数量,如果达到这个数值时,php-fpm服务会自动派生新的子进程。
pm.max_spare_servers = 35 //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。
pm.max_requests = 500 //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。