迁移 Debian 上的 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 通常分为 同机迁移、跨服务器迁移 或 升级系统迁移。下面给你一套通用、稳妥、可执行的迁移方案,适用于大多数场景(如换服务器、重装系统、Debian 版本升级)。
在 源服务器 执行:
lsb_release -a
apache2 -v
mysql --version
php -v
dpkg -l | grep php
记录:
| 组件 | 迁移内容 |
|---|---|
| Apache | 配置文件、虚拟主机 |
| MySQL/MariaDB | 数据库(逻辑导出) |
| PHP | 版本、模块 |
| 网站文件 | /var/www |
| SSL 证书 | /etc/letsencrypt 或自定义 |
| 定时任务 | crontab |
tar czvf apache-conf.tar.gz /etc/apache2
scp apache-conf.tar.gz user@new-server:/tmp
tar xzvf /tmp/apache-conf.tar.gz -C /
a2enmod rewrite ssl php*
tar czvf www.tar.gz /var/www
scp www.tar.gz user@new-server:/tmp
tar xzvf /tmp/www.tar.gz -C /
⚠️ 注意权限:
chown -R www-data:www-data /var/www
/var/lib/mysqlmysqldump -u root -p --all-databases > all-db.sql
scp all-db.sql user@new-server:/tmp
mysql -u root -p < /tmp/all-db.sql
SELECT user, host FROM mysql.user;
⚠️ 如果数据库版本不同,建议:
apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring
diff /etc/php/*/apache2/php.ini /etc/php/*/cli/php.ini
tar czvf letsencrypt.tar.gz /etc/letsencrypt
tar xzvf letsencrypt.tar.gz -C /
certbot renew
crontab -l > crontab.bak
crontab crontab.bak
apachectl configtest
systemctl restart apache2
systemctl restart mysql
| 问题 | 解决 |
|---|---|
| 403 Forbidden | 目录权限 / SELinux |
| PHP 不解析 | 未安装 libapache2-mod-php |
| 数据库连接失败 | 用户权限 / bind-address |
| 网站打不开 | Apache 虚拟主机未启用 |
apt update && apt full-upgrade
你可以直接告诉我:
我可以给你 一步一步的命令级迁移方案 ✅