温馨提示×

Ubuntu PHP-FPM怎么配置

小樊
59
2026-07-28 00:59:19
栏目: 编程语言

Ubuntu 上配置 PHP-FPM,通常用于配合 Nginx 或 Apache。下面给你一套从安装到常见配置的完整说明(以 Ubuntu 20.04 / 22.04 为例,PHP 7.4 / 8.x 都适用)。


一、安装 PHP-FPM

1. 查看可用 PHP 版本

apt update
apt search php

2. 安装 PHP-FPM(以 PHP 8.1 为例)

sudo apt install php8.1-fpm

如果要用 PHP 7.4

sudo apt install php7.4-fpm

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

3. 检查状态

systemctl status php8.1-fpm

二、PHP-FPM 目录结构

PHP-FPM 主要配置文件在:

/etc/php/8.1/fpm/

重要文件和目录:

路径 说明
/etc/php/8.1/fpm/php-fpm.conf 主配置
/etc/php/8.1/fpm/pool.d/www.conf 默认进程池配置
/run/php/php8.1-fpm.sock Unix Socket(Nginx 用)
/var/log/php8.1-fpm.log 日志

三、配置 PHP-FPM(常用优化)

1. 编辑进程池配置

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

关键参数说明

user = www-data
group = www-data

listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data

Nginx 推荐用 socket,不要用 TCP 端口


2. 进程管理方式(重点)

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

适用场景:

场景 建议
小网站 pm = dynamic
高并发 pm = static
大内存 提高 max_children

⚠️ max_children 不要盲目设太大,否则会 OOM。


四、Nginx 配置 PHP-FPM

1. 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.1-fpm.sock;
    }
}

2. 测试并重载

sudo nginx -t
sudo systemctl reload nginx

五、Apache 使用 PHP-FPM(可选)

1. 启用 proxy_fcgi

sudo a2enmod proxy_fcgi setenvif

2. 配置虚拟主机

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</FilesMatch>

六、常用管理命令

# 重启
sudo systemctl restart php8.1-fpm

# 重载
sudo systemctl reload php8.1-fpm

# 查看错误日志
tail -f /var/log/php8.1-fpm.log

七、常见问题排查

1. 502 Bad Gateway

  • Nginx 用户和 PHP-FPM socket 权限不一致
  • socket 路径写错

✅ 解决:

ls -l /run/php/

2. PHP 不执行,直接下载

  • Nginx 没配置 fastcgi_pass
  • PHP-FPM 没运行

八、推荐安全配置(可选)

expose_php = Off
disable_functions = exec,passthru,shell_exec,system

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • PHP 版本
  • 用的是 Nginx 还是 Apache
  • 是本地开发还是生产服务器

我可以给你一份完全贴合你环境的配置

0