欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

1.5-php-fpm配置文件

程序员文章站 2022-06-06 13:17:33
...
/usr/local/php/etc/php-fpm.conf 是php服务的配置

/usr/local/php/etc/php.ini 是php软件的全局配置.如:时钟


主要配置的是php服务的配置,自带服务样板很乱,首先清空,插入代码

> /usr/local/php/etc/php-fpm.conf 清空文件

vim /usr/local/php/etc/php-fpm.conf 其实删除注释后,也就是下面的代码

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

[www]

listen = /tmp/php-fcgi.sock 监听的方式,一般为sockte 可以自定义,自动生成

user = php-fpm

group = php-fpm

pm = dynamic 动态的,管理下面的代码

pm.max_children = 50 最大50个子进程

pm.start_servers = 20 一开始启动20子子进程,即启动php就启动20个进程

pm.min_spare_servers = 5 最小子进程5个

pm.max_spare_servers = 35 最多35个子进程

pm.max_requests = 500 一个子进程在它的生命周期内,一共处理500个请求。自动销毁

rlimit_files = 1024 每一个进程,它所使用的文件描述符的限制,大点也没关系

slowlog = /tmp/www_slow.log 追踪网站,排查网站慢的日志

request_slowlog_timeout = 1 脚本超时1秒,记录到上条路径的slow.log中

php_admin_value[open_basedir]=/data/www/:/tmp/ 指定php有权限的目录

代码分为两个部分

1.global 全局配置,主要是pid和错误日志

2.www为服务配置,

如果配置中pm = static 那么只有pm.max_children = 50生效,也就是启动就有50个进程,其它不生效。

建议使用dynamic 一开始会启动20个pool,如果空闲,则一个个销毁,直到最小5个为止。


多个pool的配置 不同域名,对应不同pool。有2个好处,1可以为不同的网站赋予不同的权限2一个网站挂掉,不影响其他pool的网站。

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

[www]

listen = /tmp/www.sock

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

slowlog = /tmp/www_slow.log

request_slowlog_timeout = 1

[www1] 改动1

listen = /tmp/www1.sock 改动2

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

slowlog = /tmp/www1_slow.log

request_slowlog_timeout = 1



课后答疑:

1:有两个问题1 这个listen = /tmp/php-fcgi.sock 什么时候写sock 什么时候用127.0.0.1:9000呢?

2 php-fmp里面php_admin_value[open_basedir] =/data/www/ 和nginx里面的虚拟主机配置文件root /data/aaa 如果这两个同时配置了那个目录会生效呢?

答:1. listen你愿意用哪个就哪个,都差不多,但有的人认为socket性能要比ip:port的形式高效,在我看来都差不多。

2. nginx配置的只是一个网站根目录,而php里面的open_basedir 是限定php的,你这样设置后,发现你的网站根本就不能运行了。


2:php-fpm设置了多个池子,如果需要每个pool指定不同的用户,那用户是在php编译安装时在这里--with-fpm-user=php-fpm如何绑定多个用户呢

答:上面那个是默认的,我们还可以在配置文件里定义额外的。


3:理解不了socket是什么

答:就是用来通信的文件,类似tcp/ip的通信机制,这种文件是unix/linux系统里面特有的。像mysql的数据通信,我们就可以使用socket文件通信。