php-fpm配置文件详解

php-fpm主配置文件路径:/usr/local/php-fpm/etc/php-fpm.conf

#位于安装php安装目录下的etc/目录中,该文件中最后一行将配置文件指向:include=/usr/local/php-fpm/etc/php-fpm.d/*.conf

php-fpm子配置文件路径:/usr/local/php-fpm/etc/php-fpm.d/www.conf

#php所有配置由子配置文件定义

php-fpm配置文件www.conf介绍:

1.定义进程pool名字:
在这里插入图片描述
在查看php进程时显示:
在这里插入图片描述
2.listen:指监听的地址与端口
在这里插入图片描述
与nginx配置文件中对应:
在这里插入图片描述
3.修改listen监听内容为socket文件:
在这里插入图片描述
将listen.mode对应的默认权限0660修改为0666:
在这里插入图片描述
修改nginx配置文件为socket文件路径:
在这里插入图片描述
重载php-fpm即可生成socket文件:
php-fpm配置文件详解_第1张图片
重载nginx:

[root@linux ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@linux ~]# nginx -s reload

验证:

[root@linux ~]# curl -x127.0.0.1:80 www.blog.com -I
HTTP/1.1 200 OK

#http状态码200,成功

4.php进程相关的配置:

在这里插入图片描述
#master:主进程 www:子进程

pm = dynamic 动态模式(子进程不固定,根据实际需求动态增减)
pm.max_children = 5 最大进程数(最多允许多少个子进程存在)
pm.start_servers = 2 启动php服务时,默认启动2个子进程
pm.min_spare_servers = 1 空闲时,最少不能少于几个子进程
pm.max_spare_servers = 3 空闲时,最多不能多于几个子进程
pm.max_requests = 500 每个子进程最多处理多少个请求(达到500后,子进程会自己结束掉,避免进程一直存在导致内存溢出)

5.php网站错误日志相关的配置:

php_flag[display_errors] = off (默认关闭,on开启,错误信息会显示在网页上)
php_admin_value[error_log] = /var/log/php.www.log 指定错误日志路径
php_admin_flag[log_errors] = on 错误日志开关
php_admin_value[error_reporting] = E_ALL 错误日志级别(记录所有信息)
#需要手动创建日志文件:touch /var/log/php.www.log ,chmod 777 !$

6.php慢查询日志slowlog:

记录执行时间较长的php脚本日志,可以用于分析php性能问题
slowlog = /var/log/php.slow 定义慢查询日志
request_slowlog_timeout = 3 定义超时时间,将执行时间大于3秒的php脚本信息记录到日志中

7.限制php服务的授权目录:

在php.ini文件中定义:open_basedir = /data/www/www.test.com:/tmp
在php-fpm中定义,编辑www.conf文件:
php_admin_value[open_basedir] = /data/www/www.test.com:/tmp
#当配置了授权目录后,php服务就只有授权目录的权限,如该服务器有多个网站,授权多个网站目录即可,但该配置是针对所有网站进行配置,当单个网站有被攻击时,其余网站也会有危险,所以需要在php-fpm配置文件中定义多个pool来单独设置某个网站

8.php-fpm中配置多个pool:

过滤www.conf配置文件中的注释行和空行:

[root@linux ~]# grep -v '^;' /usr/local/php-fpm/etc/php-fpm.d/www.conf | grep -v '^$'

#复制输出的配置内容

定义第一个网站www.test1.com的配置文件:vi test1.conf,添加更改复制的内容

[test1]
user = php-fpm
group = php-fpm
listen = /tmp/test1.socket
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
slowlog = /var/log/php.slow
request_slowlog_timeout = 1
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php.www.log
php_admin_flag[log_errors] = on
php_admin_value[error_reporting] = E_ALL
php_admin_value[open_basedir] = /data/www/www.test1.com:/tmp

定义第二个网站www.test2.com的配置文件:vi test2.conf,添加更改复制的内容

[test2]
user = php-fpm
group = php-fpm
listen = /tmp/test2.socket
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
slowlog = /var/log/php.slow
request_slowlog_timeout = 1
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php.www.log
php_admin_flag[log_errors] = on
php_admin_value[error_reporting] = E_ALL
php_admin_value[open_basedir] = /data/www/www.test2.com:/tmp

#需要注意listen监听的地址端口或socket文件不能相同,接下来即可根据服务器上的单个网站来设定不同的授权目录等各种配置

补充:
1.php.ini中的配置可以通过php-fpm的配置文件来设置:
例:
php.ini中log_errors = on →php-fpm中:php_admin_flag[log_errors]
php.ini中open_basedir = /xxx/xxx →php-fpm中:php_admin_value[open_basedir] = /xxx/xxx
#开关类的配置php-fpm中用php_admin_flag[],值之类的配置用php_admin_value[]
当php.ini中的配置与php-fpm的配置文件中的配置同时存时,php-fpm会覆盖php.ini

2.查看php.ini文件路径:
1) /usr/local/php-fpm/bin/php -i |head
2)phpinfo:
在网站目录下创建phpinfo.php文件,添加如下内容:


phpinfo();
?>

重启php-fpm服务后访问:域名/phpinfo.php即可显示所有php-fpm配置,但该操作存在安全隐患,可以编辑php.ini文件修改disable_functions = phpinfo ,禁掉该页面或直接在非测试环境中删掉phpinfo.php文件

你可能感兴趣的:(php-fpm配置文件详解,php配置文件,Linux运维)