温馨提示×

怎么在Debian配置PHP-FPM

小樊
35
2026-07-05 20:43:58
栏目: 编程语言

下面是在 Debian 上配置 PHP-FPM 的常用做法,适用于 Debian 10/11/12(也适合 Ubuntu,只是版本号略有差异)。我会从 安装 → 基本配置 → 与 Nginx / Apache 对接 → 常见问题 一步步说明。


一、安装 PHP-FPM

1️⃣ 更新软件源

sudo apt update

2️⃣ 安装 PHP-FPM(以 PHP 8.2 为例)

sudo apt install php8.2-fpm

如果你需要其他版本:

sudo apt install php7.4-fpm
sudo apt install php8.1-fpm

安装完成后,服务会自动启动。


二、检查 PHP-FPM 状态

systemctl status php8.2-fpm

启动 / 重启 / 停止:

sudo systemctl start php8.2-fpm
sudo systemctl restart php8.2-fpm
sudo systemctl stop php8.2-fpm

设置开机自启:

sudo systemctl enable php8.2-fpm

三、PHP-FPM 目录结构说明

PHP-FPM 主要配置文件在:

/etc/php/8.2/fpm/

常用文件:

  • php-fpm.conf:主配置
  • pool.d/www.conf:默认进程池(最重要)
  • php.ini:PHP 配置(路径:/etc/php/8.2/fpm/php.ini

四、PHP-FPM 基础配置(推荐修改)

1️⃣ 修改进程池配置

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

常见修改项:

监听方式(Unix Socket,推荐)

listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

用户和组

user = www-data
group = www-data

进程管理(示例)

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

修改后重启:

sudo systemctl restart php8.2-fpm

五、与 Web 服务器对接

✅ Nginx + PHP-FPM(最常见)

1️⃣ 安装 Nginx

sudo apt install nginx

2️⃣ 配置 Nginx

示例站点配置:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
}

3️⃣ 重载 Nginx

sudo nginx -t
sudo systemctl reload nginx

✅ Apache + PHP-FPM(via proxy_fcgi)

1️⃣ 启用模块

sudo apt install apache2
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm

2️⃣ 重启 Apache

sudo systemctl restart apache2

六、测试 PHP 是否正常工作

创建测试文件:

echo "<?php phpinfo();" | sudo tee /var/www/html/info.php

浏览器访问:

http://your_server_ip/info.php

确认:

  • Server API = FPM/FastCGI
  • 出现 PHP 信息页

✅ 测试完成后建议删除:

sudo rm /var/www/html/info.php

七、常见错误排查

❌ 502 Bad Gateway

原因:

  • PHP-FPM 未启动
  • socket 路径不一致
  • 权限错误

检查:

systemctl status php8.2-fpm
ls -l /run/php/php8.2-fpm.sock

❌ 权限问题

确保:

chown -R www-data:www-data /var/www/html

八、常见优化建议

  • 根据服务器内存调整 pm.*
  • 生产环境关闭 display_errors
  • 使用 opcache
sudo apt install php8.2-opcache

如果你愿意,我可以:

  • ✅ 帮你 按服务器内存定制 PHP-FPM 参数
  • ✅ 给你 Nginx 高并发配置
  • ✅ 排查你当前的 502 / 504 错误

直接把你的 Debian 版本 + Web 服务器 + PHP 版本 发我即可。

0