欢迎访问爱油菜中文网!
您所在的位置:首页 > 代码学苑 > 网建教程

配置文件php-fpm.conf详解

作者:来源:php教程发表于:2020-06-21 07:54:47

了解一下php 的FastCGI的配置文件,该配置文件分为三部分,第一部分为FPM配置、第二部分为全局配置、第三部分为进程池的定义。熟练掌握配置文件中的这些指令,对于Nginx的排除很有帮助。由于php从5.3.3开始集成了php-fpm,它的配置文件也有原来的xml格式改为了ini格式,除了格式上的更改外,配置内容没改变,首行是“;”的表示注释行,不会被FPM解释。

第一部分:FPM配置

本配置文件中的相对路径都与在php安装是使用的配置参数“--prefix=”有关,在这里我们是“/usr/local/php5.3.4”,这个前缀(prefix)在命令行中可以通过使用“-p”参数来动态改变。

;include=etc/fpm.d/*.conf

该指令用于包含一个或多个文件。如果glob(3) 存在 (glob() 函数返回匹配指定模式的文件名或目录。该函数返回一个包含有匹配文件 / 目录的数组。如果出错返回 false。),那么可以包含由glob(3)模式的一批文件。该指令可以在配置文件的任何地方使用。也可使用相对路径,如果你使用相对路径那么可能是下面情况中的一种:

①、如果使用了-p参数设置,那么就是全局前缀(global prefix);

②、否则就是/usr/local/php5.3.4,这是在安装php时使用“--prefix=”指定的路径。

第二部分、全局部分

全局配置部分有标志 [global] 开始,它是针对php-fpm全局设置。

;pid = run/php-fpm.pid

设置pid文件的位置。默认位置是/usr/local/php5.3.4/var(或者说是“--prefix=”下的var/目录下)。pid指令没有默认值,就是没有设置pid文件;

;error_log = log/php-fpm.log

记录错误日志的文件。该指令的默认值为log/php-fpm.log,它的默认前缀为/usr/local/php5.3.4/var;

;log_level = notice

记录日志的级别,可能的值为:alert, error, warning, notice, debug。

默认的值为:notice;

;emergency_restart_threshold = 0

如果一些子进程在这个时间段(通过该指令设置)内,而带有IGSEGV 或 SIGBUS退出,那么FPM将会重启。它的值为“0”,表示关闭该功能。

;emergency_restart_interval = 0

当文雅(graceful)的重启服务时,通过使用指令emergency_restart_interval设置时间间隔来决定服务的初始化时间。这个设置对于工作在加速器共享内存意外时很有用。

默认单位:秒

默认值:0

;process_control_timeout = 0

子进程等待master进程对信号的回应。有效的时间单位:s(econds), m(inutes), h(ours), or d(ays)。默认值为0;

;daemonize = yes

将FPM转职后台运行。如果设置为“no”,那么FPM会运行在前台,这种情况用于调试。

默认值为“yes”;

第三部分、进程池的定义

通过监听不同的端口和不同的管理选择可以定义多个不同的子进程池。进程池的名字将被用于记录和统计。对于FPM能够处理的进程池数目的多少这个没有限制。

[www]

定义一个新的进程池,命名为“www”。变量$pool可以在任何指令中使用,它将会替代相应的进程池名字。例如在这里是www。

;prefix = /path/to/pools/$pool

对于每个池的前缀,它仅可以应用在下列的指令中:

- 'slowlog'

- 'listen' (unixsocket)

- 'chroot'

- 'chdir'

- 'php_values'

- 'php_admin_values'

如果没有设置前缀,那么全局的签字(或者/usr/local/php5.3.4)将被应用。

注意:该指令也可以是相对于全局前缀。

默认值:没有(none)。

listen = 127.0.0.1:9000

接受FastCGI请求的IP地址,有效的语法如下:

'ip.add.re.ss:port'      — 在指定的IP地址和端口号上监听TCP套接字;

'port'                   — 在所有IP地址的指定端口上监听TCP套接字;

'/path/to/unix/socket'   — 在unix套接字上监听。

注意:“127.0.0.1:9000”这个值是强制性的。

;listen.backlog = -1

该指令用于设置listen(2) backlog。如果设置为“-1”,那么就意味着不受限制。默认值为:128(FreeBSD 和 OpenBSD为-1);

;listen.allowed_clients = 127.0.0.1

列出允许FastCGI客户端连接的ipv4 IP地址。这个指令与原来php FCGI (5.2.2+)的环境变量FCGI_WEB_SERVER_ADDRS相等。每一个地址之间需要使用逗号隔开,如果该指令的值为空,那么该进程池将接受从任何地址的的请求连接。默认为any,即接受任何连接。

;listen.owner = nobody

;listen.group = nobody

;listen.mode = 0666

设置unix套接字权限,如果使用它,为了允许从web服务器连接,在Linux中必须设置读/写权限。许多源于BSD的系统允许连接而不管权限问题。默认值:ser 和 group都被设置为运行FPM的用户,而mode设置为0666。

user = nobody

group = nobody

运行FPM进程的用户和组,该用户和组必须在Unix系统中存在。

注意:user是强制的,必须设置,如果group没有设置,那么默认user的组将被使用。

pm = dynamic

选择进程管理器如何控制子进程的数目。

可能的值:

static - 对于子进程的开启数目给定一个锁定的值(pm.max_children);

dynamic - 子进程的数目为动态的,它的数目是基于下面指令的值:

pm.max_children -  同一时刻能够存活的最大子进程数目。

pm.start_servers -  在启动时启动的子进程数目。

pm.min_spare_servers -  处于“空闲('idle')”状态(等待处理)的最小子进程。如果空闲进程的数目少于该值,那么相应的子进程将会被创建。

pm.max_spare_servers -  最大的空闲子进程数目,如果空闲的子进程数目大于这个数目,那么相应的子进程将会被杀掉。

注意: dynamic为强制值。

pm.max_children = 50

当pm被设置为“static”的时候,该指令的值表示为开启php-fpm数目数;

当pm被设置为“dynamic”的时候,该指令的值表示被建立的最大子进程数目。

该值设置了能够同时提供请求的最大限制数目。相当于在Apache中mpm_prefork下的指令ApacheMaxClients的功能。相当于以前php CGI的环境变量php_FCGI_CHILDREN。

注意:无论pm被设置为“static”还是“dynamic”,该指令都会被使用。

注意:该值是强制的。

;pm.start_servers = 20

在启动FPM时创建的子进程。

注意:仅将pm设置为“dynamic”时使用。

默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2

;pm.min_spare_servers = 5

期望空闲进程的最小值。

注意:仅当将pm设置为“dynamic”时才使用该指令。

;pm.max_spare_servers = 35

期望空闲进程的最大值。

注意:仅当将pm设置为“dynamic”时才使用该指令。

;pm.max_requests = 500

在派生出新的子进程之前,每一个子进程应该处理的请求数目。在第三方库中这个对于解决内存溢出很有用。如果将该值设置为“0”,那么处理的请求将不会收到限制。相当于php_FCGI_MAX_REQUESTS。默认值为0。





相关文章
    无相关信息