温馨提示×

怎么迁移Debian LNMP站点

小樊
53
2026-07-02 04:57:16
栏目: 智能运维

迁移 Debian 下的 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)站点,通常分 4 个部分:系统准备、Web 站点、数据库、数据一致性。下面给你一套通用、实战型迁移流程,适用于云服务器、VPS、本地机之间迁移。


一、准备工作(目标服务器)

目标 Debian 服务器 上先做好基础环境:

apt update
apt install -y nginx mariadb-server php-fpm php-mysql php-common php-cli

确认版本尽量和源服务器一致:

  • Nginx
  • PHP(版本、扩展)
  • MySQL / MariaDB

查看版本:

nginx -v
php -v
mysql --version

二、迁移 Web 站点(Nginx + PHP)

1️⃣ 打包原站点文件(源服务器)

cd /var/www
tar czvf site.tar.gz your_site/

或包含配置:

tar czvf site_full.tar.gz your_site/ /etc/nginx/sites-available/your_site

2️⃣ 传输到目标服务器

scp site.tar.gz root@目标IP:/tmp

3️⃣ 解压并部署(目标服务器)

mkdir -p /var/www
tar xzvf /tmp/site.tar.gz -C /var/www

恢复 Nginx 配置:

cp /tmp/sites-available/your_site /etc/nginx/sites-available/
ln -s /etc/nginx/sites-available/your_site /etc/nginx/sites-enabled/

4️⃣ PHP 调整(如有)

确认 PHP-FPM 监听方式一致:

grep listen /etc/php/*/fpm/pool.d/www.conf

常见:

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

修改 Nginx:

fastcgi_pass unix:/run/php/php-fpm.sock;

重载服务:

systemctl reload nginx php-fpm

三、迁移数据库(关键)

1️⃣ 导出数据库(源服务器)

mysqldump -u root -p --single-transaction --all-databases > all.sql

或单库:

mysqldump -u root -p dbname > dbname.sql

2️⃣ 传到目标服务器

scp all.sql root@目标IP:/tmp

3️⃣ 导入数据库(目标服务器)

mysql -u root -p < /tmp/all.sql

如果原用户不存在:

CREATE DATABASE dbname;
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

四、权限和路径修复(非常重要)

1️⃣ 文件权限

chown -R www-data:www-data /var/www/your_site
chmod -R 755 /var/www/your_site

如有上传目录:

chmod -R 777 /var/www/your_site/uploads

2️⃣ 检查配置文件中的路径、域名

常见文件:

  • .env
  • config/database.php
  • wp-config.php

检查:

  • 数据库地址
  • 域名
  • 绝对路径

五、测试验证

nginx -t
systemctl status nginx php-fpm mariadb

浏览器访问新服务器 IP / 域名,检查: ✅ 页面正常
✅ 数据库连接
✅ 上传、登录、后台


六、切换正式流量(可选)

1️⃣ 改 DNS

A 记录 → 新服务器 IP

2️⃣ 最后再同步一次数据(防止遗漏)

rsync -avz /var/www/your_site/ root@目标IP:/var/www/your_site/

七、常见坑总结

问题 解决
502 Bad Gateway PHP-FPM 未启动 / sock 路径错误
403 nginx 无目录权限
数据库连接失败 用户 / host / 密码不一致
上传失败 upload 目录权限
HTTPS 失效 证书未迁移或路径错误

如果你愿意,我可以:

  • ✅ 给你 一条命令自动化迁移脚本
  • ✅ 专门针对 WordPress / Laravel / Typecho
  • ✅ 帮你核对 你现有服务器环境

直接贴:

cat /etc/os-release
php -v
nginx -v

0