温馨提示×

PHP-FPM如何适配Ubuntu

小樊
43
2026-07-28 01:02:25
栏目: 编程语言

下面我按从安装到适配优化的思路,给你一个 PHP-FPM 在 Ubuntu 上的完整适配指南,适用于 Ubuntu 20.04 / 22.04 / 24.04,也适合生产环境。


一、安装 PHP-FPM(Ubuntu)

1️⃣ 更新系统

sudo apt update && sudo apt upgrade -y

2️⃣ 安装 PHP-FPM

Ubuntu 默认仓库已包含 PHP-FPM。

安装指定版本(推荐)

# 例如 PHP 8.1
sudo apt install php8.1-fpm -y

或安装多个版本(常见)

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

二、PHP-FPM 目录结构(关键路径)

目录 说明
/etc/php/{version}/fpm/ 配置目录
/etc/php/{version}/fpm/pool.d/ 进程池配置
/var/run/php/ socket 文件
/var/log/php{version}-fpm.log 日志
/usr/sbin/php-fpm{version} 主程序

三、PHP-FPM 基本配置(适配 Ubuntu)

1️⃣ 主配置(一般不用改)

sudo vim /etc/php/8.1/fpm/php-fpm.conf

重点参数:

pid = /run/php/php8.1-fpm.pid
error_log = /var/log/php8.1-fpm.log

2️⃣ 进程池配置(重点)

sudo vim /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
listen.mode = 0660

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

四、与 Web 服务器适配(最常见)

✅ Nginx + PHP-FPM(推荐)

1️⃣ 安装 Nginx

sudo apt install nginx -y

2️⃣ Nginx 站点配置

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

    index index.php index.html;

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

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

3️⃣ 重启服务

sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx

✅ 验证:

php -v
curl http://localhost/info.php

✅ Apache + PHP-FPM(Ubuntu 官方推荐方式)

1️⃣ 安装 Apache

sudo apt install apache2 -y

2️⃣ 启用代理模块

sudo a2enmod proxy_fcgi setenvif

3️⃣ 配置 PHP-FPM

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

4️⃣ 重启

sudo systemctl restart apache2
sudo systemctl restart php8.1-fpm

五、Ubuntu 系统级适配(非常重要)

1️⃣ 设置开机自启

sudo systemctl enable php8.1-fpm

2️⃣ 查看状态

systemctl status php8.1-fpm

3️⃣ 查看日志

tail -f /var/log/php8.1-fpm.log

六、常见适配问题与解决

❌ 502 Bad Gateway

✅ 原因:

  1. socket 路径错误
  2. 权限不对
  3. PHP-FPM 没启动

✅ 解决:

ls -l /run/php/
sudo chown www-data:www-data /run/php/php8.1-fpm.sock

❌ 多版本 PHP 冲突

✅ 查看端口/socket:

ss -pl | grep php

✅ 给不同版本不同 socket:

listen = /run/php/php8.2-fpm.sock

七、生产环境优化建议

✅ 安全

expose_php = Off
disable_functions = exec,passthru,shell_exec

✅ 性能

pm = dynamic
pm.max_children = 根据内存计算

✅ 使用 Opcache

sudo apt install php8.1-opcache

八、快速检查清单 ✅

  • [ ] PHP-FPM 安装成功
  • [ ] 与 Nginx / Apache 正确对接
  • [ ] socket 权限正确
  • [ ] 错误日志可查
  • [ ] 服务开机自启

如果你愿意,我可以: ✅ 给你 一份生产级 php-fpm.conf ✅ 帮你 算 max_children ✅ 针对 Docker / 云服务器 / 高并发 场景优化

直接告诉我你的 Ubuntu 版本 + Web 服务器 + 使用场景 即可。

0