温馨提示×

Ubuntu PHP-FPM如何迁移

小樊
34
2026-08-24 11:20:05
栏目: 编程语言

下面给你一套从 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(如仍使用)

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

五、权限与用户一致性(常见问题)

✅ 确保用户一致:

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 服务 即可。

0