# 安装与配置 PHP-FPM

URL: https://caijiao.org/nginx/php-fpm-install
Source: docs/nginx/php-fpm-install.md
Description: 本节介绍 PHP-FPM 的安装与配置方法，包括系统安装、服务管理、池配置及与 Nginx FastCGI 结合，实现高性能动态内容处理。

PHP-FPM 是 PHP 的 FastCGI 进程管理器，用于处理动态请求，与 Nginx 配合提供高性能 PHP 服务。

## 一、安装 PHP-FPM

### 1. 在 Linux 系统上安装

#### CentOS / RockyLinux

```bash
sudo dnf install php-fpm php-mysqlnd php-cli -y
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
sudo systemctl status php-fpm
````

#### Debian / Ubuntu

```bash
sudo apt update
sudo apt install php-fpm php-mysql php-cli -y
sudo systemctl enable php7.4-fpm
sudo systemctl start php7.4-fpm
sudo systemctl status php7.4-fpm
```

### 2. Windows 系统

1. 下载 PHP 官方 Zip 包
2. 解压并修改 `php.ini` 启用 `cgi.fix_pathinfo=1`
3. 配置 `php-fpm.conf` 并启动 `php-cgi.exe -b 127.0.0.1:9000`

## 二、PHP-FPM 池配置

PHP-FPM 通过 **池（pool）** 管理多个工作进程：

```ini
; /etc/php-fpm.d/www.conf
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
```

### 主要参数说明

* **user / group**：运行 PHP-FPM 工作进程的用户与组
* **listen**：监听地址，可为 TCP 或 Unix Socket
* **pm**：进程管理模式（dynamic, static, ondemand）
* **pm.max_children**：允许同时处理的最大请求数
* **pm.start_servers / min_spare_servers / max_spare_servers**：控制动态进程数量

## 三、Nginx 配合 PHP-FPM

```nginx
location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
```

确保 `fastcgi_pass` 地址与 PHP-FPM 池监听地址一致。

## 四、常用服务管理命令

```bash
sudo systemctl start php-fpm
sudo systemctl stop php-fpm
sudo systemctl restart php-fpm
sudo systemctl reload php-fpm
```

---

通过正确安装与配置 PHP-FPM，你可以让 Nginx 高效处理 PHP 动态请求，实现稳定的 Web 服务环境。
