迁移 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 到新服务器,通常包括 系统环境、网站文件、数据库、配置 四部分。下面给你一套 通用、稳妥、可回滚 的迁移流程,适用于 CentOS / Rocky / Alma / Ubuntu / Debian。
✅ 推荐:
新服务器先 空环境安装 LNMP,不要直接覆盖
nginx -v
php -v
mysql -V
lsb_release -a
systemctl stop nginx
systemctl stop php-fpm
例如网站目录:
tar czvf /tmp/www.tar.gz /usr/share/nginx/html
# 或
tar czvf /tmp/www.tar.gz /var/www
scp /tmp/www.tar.gz root@新服务器IP:/tmp/
tar xzvf /tmp/www.tar.gz -C /
tar czvf /tmp/nginx_conf.tar.gz /etc/nginx
scp /tmp/nginx_conf.tar.gz root@新服务器IP:/tmp/
tar xzvf /tmp/nginx_conf.tar.gz -C /
nginx -t
✅ 常见问题:
tar czvf /tmp/php_conf.tar.gz /etc/php-fpm.d /etc/php.ini
tar xzvf /tmp/php_conf.tar.gz -C /
mysqldump -uroot -p --all-databases > /tmp/all.sql
或单库:
mysqldump -uroot -p dbname > /tmp/dbname.sql
scp /tmp/all.sql root@新服务器IP:/tmp/
mysql -uroot -p < /tmp/all.sql
systemctl stop mysqld
tar czvf /tmp/mysql_data.tar.gz /var/lib/mysql
systemctl stop mysqld
tar xzvf /tmp/mysql_data.tar.gz -C /
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
⚠️ 版本必须完全一致
tar czvf /tmp/ssl.tar.gz /etc/nginx/ssl
tar xzvf /tmp/ssl.tar.gz -C /
systemctl start nginx
systemctl start php-fpm
systemctl start mysqld
检查状态:
systemctl status nginx
systemctl status php-fpm
systemctl status mysqld
curl http://新服务器IP
✅ 网站能否访问
✅ HTTPS 是否正常
✅ 后台是否可登录
✅ 数据库是否完整
✅ 上传目录权限
✅ 定时任务(crontab)
✅ 日志是否正常
| 问题 | 解决 |
|---|---|
| 403 | 目录权限 |
| 502 | php-fpm 未启动 |
| 空白页 | php 错误 |
| 数据库连接失败 | 用户权限 |
| 上传失败 | upload_tmp_dir |
如果你愿意,可以告诉我:
我可以给你 精确到命令级别的迁移方案。