在 CentOS 上迁移 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 环境,通常有两种常见场景:
- 同版本 CentOS 之间迁移(服务器更换)
- CentOS 6/7 迁移到 CentOS 8/Stream 或其他系统
下面以最常见:把一台 CentOS 上的 LAMP 站点整体迁移到另一台 CentOS 服务器为例说明。
一、迁移前准备
1. 新旧服务器信息
- 旧服务器:CentOS + Apache + MySQL/MariaDB + PHP
- 新服务器:建议 同版本 CentOS(如 CentOS 7 → CentOS 7)
2. 新服务器基础环境
yum update -y
安装 LAMP:
yum install -y httpd mariadb-server php php-mysql
启动服务:
systemctl enable httpd mariadb
systemctl start httpd mariadb
二、迁移 Apache 网站配置
1. 备份旧服务器 Apache 配置
tar czf apache-conf.tar.gz /etc/httpd
或者只备份虚拟主机:
tar czf vhost.tar.gz /etc/httpd/conf.d
2. 迁移并恢复
把 apache-conf.tar.gz 传到新服务器:
scp apache-conf.tar.gz root@new-server:/root/
新服务器恢复:
tar xzf apache-conf.tar.gz -C /
三、迁移网站文件
1. 备份网站目录(常见路径)
tar czf www.tar.gz /var/www/html
如果有自定义目录:
tar czf site.tar.gz /data/www
2. 恢复到新服务器
scp www.tar.gz root@new-server:/root/
tar xzf www.tar.gz -C /
设置权限:
chown -R apache:apache /var/www/html
四、迁移数据库(重点)
1. 旧服务器导出数据库
mysqldump -uroot -p --all-databases > all.sql
或单个数据库:
mysqldump -uroot -p dbname > dbname.sql
2. 传输到新服务器
scp all.sql root@new-server:/root/
3. 新服务器导入
mysql -uroot -p < all.sql
⚠️ 注意:
- 若使用 MariaDB → MySQL 或版本跨度大,需测试兼容性
- 导入后检查用户权限:
SELECT user,host FROM mysql.user;
五、PHP 环境迁移
1. 备份 PHP 配置
tar czf php-conf.tar.gz /etc/php.ini /etc/php.d
2. 恢复
tar xzf php-conf.tar.gz -C /
3. 安装相同 PHP 扩展
旧服务器查看扩展:
php -m
新服务器安装:
yum install -y php-mysql php-gd php-mbstring ...
六、测试与切换
1. 本地 hosts 测试
新服务器IP domain.com
2. 检查服务状态
systemctl status httpd mariadb
3. 解析切换
- 修改 DNS
- 或负载均衡切换
七、常见问题
❌ 403 Forbidden
chown -R apache:apache /var/www
chmod 755 /var/www
❌ 数据库连不上
- 检查
bind-address - 检查防火墙
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload
❌ PHP 不解析
yum install php
systemctl restart httpd
八、简化方案(推荐)
如果是整机迁移,可以用:
- rsync
- 云镜像 / 快照
- 宝塔 / cPanel 一键迁移
示例 rsync:
rsync -avz /var/www/ root@new:/var/www/
rsync -avz /etc/httpd/ root@new:/etc/httpd/
如果你能说明:
- CentOS 版本(6/7/8)
- 用 MySQL 还是 MariaDB
- 是否使用面板(宝塔等)
我可以给你更精确的迁移命令。