下面给你一套从 Ubuntu 上迁移 PHP-FPM 的完整思路与实操步骤,适用于:
- 服务器迁移(旧 → 新)
- 版本升级(如 7.4 → 8.1 / 8.2)
- 从 Apache 切换到 Nginx + PHP-FPM
一、迁移前的准备
1️⃣ 确认当前 PHP-FPM 信息
php -v
php-fpm -v
查看版本和使用的 SAPI。
查看当前 PHP-FPM 池配置:
ls /etc/php/*/fpm/pool.d/
查看服务名:
systemctl list-units | grep fpm
二、在新服务器上安装 PHP-FPM
1️⃣ 添加 PHP 官方源(推荐)
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
2️⃣ 安装 PHP-FPM(示例:8.2)
sudo apt install -y php8.2-fpm php8.2-cli
常用扩展:
sudo apt install -y \
php8.2-mysql \
php8.2-curl \
php8.2-gd \
php8.2-mbstring \
php8.2-xml \
php8.2-zip \
php8.2-opcache
三、迁移 PHP-FPM 配置(核心)
1️⃣ 迁移主配置
旧服务器:
/etc/php/8.2/fpm/php.ini
/etc/php/8.2/fpm/php-fpm.conf
拷贝到新服务器相同路径(或手动合并差异)。
⚠️ 注意:
- 不要直接覆盖,先对比
php.ini中路径、内存、上传限制等要检查
2️⃣ 迁移 PHP-FPM 池(非常重要)
旧服务器:
/etc/php/8.2/fpm/pool.d/www.conf
新服务器:
/etc/php/8.2/fpm/pool.d/
常见需要检查的项:
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 50
如果有多个站点,建议一个站点一个 pool,例如:
/etc/php/8.2/fpm/pool.d/site1.conf
/etc/php/8.2/fpm/pool.d/site2.conf
四、迁移网站代码与 Web 服务器配置
1️⃣ 迁移网站代码
rsync -avz /var/www/ user@newserver:/var/www/
2️⃣ Nginx 示例配置
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
3️⃣ Apache(如仍使用)
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
五、权限与用户一致性(常见问题)
✅ 确保用户一致:
id www-data
✅ 修复权限:
chown -R www-data:www-data /var/www
chmod -R 755 /var/www
六、启动并验证 PHP-FPM
sudo systemctl restart php8.2-fpm
sudo systemctl enable php8.2-fpm
sudo systemctl status php8.2-fpm
验证 PHP:
php -i | grep "Loaded Configuration File"
或创建测试文件:
<?php phpinfo(); ?>
七、常见问题排查
❌ 502 Bad Gateway
- socket 路径不一致
- nginx 用户无权访问 sock
- php-fpm 未启动
检查:
ls -l /run/php/
❌ 上传 / session 目录权限错误
chown -R www-data:www-data /var/lib/php/sessions
八、迁移检查清单 ✅
- [ ] PHP 版本一致或已测试兼容
- [ ] php.ini 已迁移
- [ ] pool 配置已迁移
- [ ] socket / TCP 端口一致
- [ ] Web 服务配置已更新
- [ ] 权限正确
- [ ] 服务已重启
如果你愿意,我可以:
✅ 给你旧 → 新服务器一键迁移脚本
✅ 帮你对比 php.ini 差异
✅ 针对 Laravel / WordPress / ThinkPHP 做专项迁移方案
直接告诉我你的 Ubuntu 版本 + PHP 版本 + Web 服务 即可。