ITPub博客

首页 > > > 部署LAMP发布PHP网站-PHP-FPM特点

部署LAMP发布PHP网站-PHP-FPM特点

作者:longmanma 时间:2019-12-12 17:49:44 0 删除 编辑

PHP-FPM特点

listen:The address on which to accept FastCGI requests.它支持TCP Socket和unix socket两种通讯协议。可设置listen = [::]:9000。

listen.allowed_clients:List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. 该配置项为逗号分隔的列表,如listen.allowed_clients = 127.0.0.1,172.17.0.5。

pm:Choose how the process manager will control the number of child processes. 该配置项设置FPM管理进程池的方式,包括static、dynamic、ondemand三种。

pm.max_requests:The number of requests each child process should execute before respawning. This can be useful to work around memory leaks in 3rd party libraries.设置每个子进程处理请求数的上限,对于处理第三方库中的内存泄漏很有用。

pm.status_path:The URI to view the FPM status page. 支持状态页面监控php-fpm

PHP-FPM工作原理:

1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

#php-fpm服务设置 pool

每个pool可以监听不同的sock、tcp/ip,pool池是支持定义多个pool的。所有的网站使用同一个池,那其中一个网站发生一些故障,比如程序员写的一些程序有问题,就会把php资源耗尽,这样的结果就是其他站点的php也会502。所以有必要把每一个站点隔离开。每个pool的名字要唯一。

PHP服务配置

#主配置文件

[root@apache_251 var]# egrep -v "^;|^$" /usr/local/php/etc/php-fpm.conf

[global]

pid = run/php-fpm.pid

error_log = log/php-fpm.log

daemonize = yes

include = /usr/local/php/etc/php-fpm.d/*.conf

#子配置文件

[root@apache_251 var]# cp /usr/local/php/etc/php-fpm.d/.default /usr/local/php/etc/php-fpm.d/

[root@apache_251 var]# egrep -v "^;|^$" /usr/local/php/etc/php-fpm.d/

[www]

user = www

group = www

listen = 127.0.0.1:9000

listen.owner = www

listen.group = www

listen.mode = 0660

pm = dynamic

pm.max_children = 5

pm.start_servers = 2

pm.min_spare_servers = 1

pm.max_spare_servers = 3

注释

# 全局配置

[global]

# PID、可以不填

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

# 错误日志路径、可以不填

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

# www虚拟主机配置、可写多个

# pool命名:www

[www]

# 监听socket方式

# 可以写成listen = 127.0.0.1:9000

listen = /tmp/php-fcgi.sock

# 开启php-fpm的执行用户

user = www

# 开启php-fpm的所属组

group = www

# 监听socket listen的用户,和web服务器软件的一致

listen.owner = nobody

# 监听socket listen的组,和web服务器软件的一致

listen.group = nobody

# 怎样的形式启用进程

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

四、PHP启动

[root@apache_251 ~]# cp /usr/src/php-7.3.4/sapi/fpm/php-fpm.service /etc/systemd/system/

[root@apache_251 ~]# systemctl daemon-reload

[root@apache_251 ~]# systemctl enable php-fpm

[root@apache_251 ~]# systemctl start php-fpm

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2730/viewspace-3170379/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-12-18

  • 博文量
    492
  • 访问量
    11994