首页/发现新知
视界 · 深度阅读

centos lamp怎样迁移

在 CentOS 上迁移 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 环境,通常有两种常见场景:

  1. 同版本 CentOS 之间迁移(服务器更换)
  2. 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
  • 是否使用面板(宝塔等)

我可以给你更精确的迁移命令。

读到这里,发现更多一点。探索更多内容 ↗