温馨提示×

Ubuntu PHP-FPM如何设置

小樊
39
2026-07-13 20:35:30
栏目: 编程语言

下面给你一份在 Ubuntu 上配置 PHP-FPM 的完整常见做法,适用于 Nginx + PHP-FPM(最常见场景)。如果你用的是 Apache,也可以告诉我,我可以单独说明。


一、安装 PHP-FPM

1. 更新软件源

sudo apt update

2. 安装 PHP 及 PHP-FPM

以 PHP 8.2 为例(可按需换成 8.1 / 8.3):

sudo apt install php8.2-fpm php8.2-cli php8.2-common \
php8.2-mysql php8.2-curl php8.2-mbstring php8.2-xml

安装完成后,PHP-FPM 会自动启动。


二、PHP-FPM 基本配置

1. PHP-FPM 配置文件位置

/etc/php/8.2/fpm/

主要文件:

  • 主配置/etc/php/8.2/fpm/php-fpm.conf
  • 池配置/etc/php/8.2/fpm/pool.d/www.conf

2. 常见池配置(www.conf)

编辑:

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

监听方式(推荐 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

如果是高并发站点,可适当调大 pm.max_children


三、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.2-fpm.sock;
    }
}

四、启动 / 重启 / 开机自启

启动 PHP-FPM

sudo systemctl start php8.2-fpm

设置开机自启

sudo systemctl enable php8.2-fpm

重启

sudo systemctl restart php8.2-fpm

查看状态

sudo systemctl status php8.2-fpm

五、验证 PHP-FPM 是否工作

创建测试文件:

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

浏览器访问:

http://服务器IP/info.php

看到 PHP 信息页面即成功 ✅


六、常见问题排查

1. 502 Bad Gateway

  • Nginx 与 PHP-FPM socket 不匹配
  • PHP-FPM 未启动
  • 权限问题

检查:

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

2. 修改配置后不生效

sudo systemctl reload php8.2-fpm
sudo systemctl reload nginx

七、性能优化建议(进阶)

  • 使用 pm = ondemand(低流量服务器)
  • 开启 OPcache
sudo apt install php8.2-opcache
  • 限制 pm.max_children,避免内存耗尽

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

  • ✅ Ubuntu 版本(20.04 / 22.04 / 24.04)
  • ✅ PHP 版本
  • ✅ 使用 Nginx 还是 Apache
  • ✅ 是本地开发还是生产服务器

我可以给你更精确的配置方案

0