nginx fastcgi 与 php-fpm

一、fastcgi & php-fpm

1、静态网站

所见即所得,不会随着用户的交互而改变

nginx 服务器能处理的是静态元素 .html .jpg .mp4 .css

2、动态网站

(1) 页面具有自动更新和交互性,由用户生成的网站:填写的信息、发表的评论

(2) ngx_fastcgi_module

fastcgi:快速公共网关接口协议,nginx 处理动态请求的接口。nginx 通过ngx_fastcgi_modul 模块,链接 php-fpm处理动态请求。

3、php

(1) php-fpm:FastCGI Process Manager 快速通用网关进程管理器

php 通过 php-fpm 接收 nginx 的动态访问请求,将查询结果返回给 nginx。

(2) php-mysql

php 连接 mysql 的接口程序,php 通过 php-mysql 可以与MySQL数据库进行交互,实现数据的查询、更新等操作。

4、FastCGI + php-fpm 的运行原理

① Nginx 充当前端 Web 服务器,接收来自客户端的 HTTP 请求;

② 当 Nginx 收到动态内容的请求(通常是以 .php 扩展名的文件),它会查找与请求匹配的 FastCGI 处理程序,这里就是 php-fpm。Nginx 将请求的 HTTP 头和正文通过 FastCGI 接口发送给 php-fpm 进程;

③ php-fpm 接收到请求后,会执行 PHP 脚本并生成响应的 HTTP 头和正文,再将响应通过 FastCGI 发送回 Nginx,然后 Nginx 将响应返回给客户端。

二、php-fpm 初始化配置

1、php-fpm 相关配置文件

(1) 核心配置文件 /etc/php.ini

① date.timezone = PRC:在 php 中设置默认时区为中国

② open_basedir:open_basedir 是一个用于限制 PHP 脚本文件操作范围的指令,它的作用是限制PHP脚本只能访问指定的目录及其子目录。设置了 open_basedir 后,程序打开文件时会先检查文件的位置,当文件在指定目录之外,程序将拒绝打开。

(2) 全局配置文件 /etc/php-fpm.conf

① pid = /run/php-fpm/php-fpm.pid:设置pid文件的位置

PID文件是指进程标识文件(Process Identifier File),用于记录当前进程的进程号(PID)

② error_log = log/php-fpm.log:错误日志的的位置

③ log_level = notice:记录日志的等级

日志等级:

● Alert(必须立即处理): Alert 级别表示非常严重的问题,需要立即采取行动来解决,通常用于表示系统崩溃或无法继续运行的情况。

● Error(错误情况): Error 级别表示应用程序遇到了一个错误,但仍然可以继续执行。

● Warning(警告情况): Warning 级别表示潜在的问题或不太严重的错误,需要引起注意,但不会中断应用程序的正常运行。

● Notice(一般重要信息): Notice 级别表示一般重要的信息,用于跟踪应用程序的正常运行。

● Debug(调试信息): Debug 级别用于记录详细的调试信息,通常在开发和调试阶段启用。

④ daemonize = yes:

php-fpm 作为守护进程运行,php-fpm 将在后台一直运行,除非手动停止或重启该进程。

(3) 扩展配置文件 /etc/php-fpm.d/www.conf

① Start a new pool named 'www':php 开启的进程池命名为 www

每一个动态的请求都需要一个独立的程序去完成

② pm = dynamic:开启动态模式进程管理

● pm.start_servers = 5:最初开启的进程,意味着 php-fpm 启动时,将5个 php 工作进程,等待 Web 服务器发送请求。

● pm.min_spare_servers = 5:最小空闲进程数,用于指定 php-fpm 进程池中最小的空闲进程数量。当来访用户数量超过5时(start_servers),php 服务器会尽可能开更多的进程处理用户请求,同时保证至少有5个空闲进程,等待其他用户请求。

● pm.max_children = 50:这个配置选项定义了 php-fpm 进程池中可以同时存在的最大子进程数量,这个值设置为50时,意味着 php-fpm 进程池最多可以同时运行50个子进程来处理请求。如果有更多的请求到达,它们将排队等待处理,直到有可用的子进程。

这个配置项的值需要根据服务器性能和资源限制来进行调整(一般一个 php 请求占用内存10M - 40M)。如果设置得太小,可能会导致无法处理所有请求,从而影响网站的性能;如果设置得太大,可能会消耗过多的内存和CPU资源,导致服务器负载过高。

● pm.max_spare_servers = 35指定 php-fpm 进程池中允许的最大空闲进程数量。当最多空闲进程数超过35时,立即杀死空闲进程,只保留35个。

min_spare_servers 应用于高负载场景 ;max_spare_servers 应用于低负载场景。

● pm.max_requests = 500:用于指定每个 php-fpm 子进程可以处理的最大请求数。当这个值设置为500时,表示每个子进程在处理了500个请求之后将被重新启动。

● user = nginx:设置用户为 nginx

● listen.allowed_clients = 127.0.0.1 ;listen = 127.0.0.1:9000

listen.allowed_clients:允许 fastcgi 进程访问的 ip,设置为any表示不限制 ip

listen = 127.0.0.1:9000 php-fpm 监听的 IP 地址和端口

融合部署可以将客户端和服务器的 ip 都设为 127.0.0.1。

分离部署:

2、php-fpm 初始化配置

生产环境下常用数值:

pm = dynamic

pm.start_servers = 32

pm.max_children = 512

pm.min_spare_servers = 32

pm.max_spare_servers = 64

pm.max_requests = 1500

配置后要重启 php-fpm

3、php-fpm 状态监控页面

(1) 简介:

php-fpm 状态监控页面用于查看 php-fpm 运行状况和性能统计信息,可以实时监控 php-fpm 进程池的活动。

(2) 启动 php 监控状态页面

① pm.status_path = /status

这条指令用于指定查看 php-fpm 进程池状态的 URL 路径,可以通过访问 /status 路径来查看 php-fpm 进程池的状态信息。

② nginx 配置页面转发

vim  /etc/nginx/conf.d/default.con

location = /status {

fastcgi_pass 127.0.0.1:9000;

fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

include fastcgi_params;

}

③ 访问监控页面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值