下面我按从安装到适配优化的思路,给你一个 PHP-FPM 在 Ubuntu 上的完整适配指南,适用于 Ubuntu 20.04 / 22.04 / 24.04,也适合生产环境。
sudo apt update && sudo apt upgrade -y
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
| 目录 | 说明 |
|---|---|
/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} |
主程序 |
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
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
sudo apt install nginx -y
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;
}
}
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
✅ 验证:
php -v
curl http://localhost/info.php
sudo apt install apache2 -y
sudo a2enmod proxy_fcgi setenvif
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</FilesMatch>
sudo systemctl restart apache2
sudo systemctl restart php8.1-fpm
sudo systemctl enable php8.1-fpm
systemctl status php8.1-fpm
tail -f /var/log/php8.1-fpm.log
✅ 原因:
✅ 解决:
ls -l /run/php/
sudo chown www-data:www-data /run/php/php8.1-fpm.sock
✅ 查看端口/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 = 根据内存计算
sudo apt install php8.1-opcache
如果你愿意,我可以: ✅ 给你 一份生产级 php-fpm.conf ✅ 帮你 算 max_children ✅ 针对 Docker / 云服务器 / 高并发 场景优化
直接告诉我你的 Ubuntu 版本 + Web 服务器 + 使用场景 即可。