WordPress网站迁移教程:换主机不丢数据
详细的WordPress网站迁移教程,教你安全地将网站从一个主机迁移到另一个主机,不丢失任何数据。
前言
网站迁移是迟早要面对的事情。不管是主机到期换服务商,还是从虚拟主机升级到VPS,或者是网站换域名,都需要做迁移。我迁移过不下20次网站了,最快的一次20分钟搞定,最慢的一次折腾了一整天。今天把最靠谱的迁移方法整理出来。
迁移前的准备
迁移清单
| 准备项目 | 说明 | 状态 |
|---|---|---|
| 完整备份 | 文件+数据库 | 必须 |
| 新主机环境 | PHP+MySQL已配置 | 必须 |
| 域名DNS权限 | 可以修改DNS记录 | 必须 |
| FTP/SSH工具 | 用于传输文件 | 必须 |
| 降低DNS TTL | 提前24小时降到300秒 | 推荐 |
降低DNS TTL
迁移前24小时,先把域名的DNS TTL值降低:
修改前:TTL = 86400(24小时)
修改后:TTL = 300(5分钟)
这样在切换DNS时,用户能更快地访问到新服务器。
方法一:使用All-in-One WP Migration(最简单)
这是最傻瓜式的迁移方法,适合新手。
在旧网站上操作
- 安装All-in-One WP Migration插件
- 进入后台 → All-in-One WP Migration → 导出
- 选择”导出到 → 文件”
- 等待导出完成后下载
免费版有导入限制(通常512MB)。如果网站较大,可以购买Unlimited Extension或使用其他方法。
在新网站上操作
- 在新服务器上安装WordPress
- 安装All-in-One WP Migration插件
- 进入后台 → All-in-One WP Migration → 导入
- 上传刚才导出的文件
- 等待导入完成
- 重新设置固定链接(后台 → 设置 → 固定链接 → 保存)
方法二:使用Duplicator(推荐中级用户)
Duplicator可以把整个网站打包成一个安装包。
创建迁移包
- 安装Duplicator插件
- 进入后台 → Duplicator → 包
- 点击”创建新包”
- 按向导完成扫描和构建
- 下载两个文件:
installer.php和archive.zip
在新服务器上恢复
1. 将installer.php和archive.zip上传到新服务器的网站根目录
2. 在浏览器访问:http://新服务器IP/installer.php
3. 按向导填写新的数据库信息
4. 等待安装完成
5. 删除安装文件(安全考虑)
方法三:手动迁移(最可控)
手动迁移虽然步骤多,但最可控,适合有一定技术基础的用户。
第一步:备份旧网站
# 打包网站文件
cd /var/www/
tar -czf site-backup.tar.gz html/
# 导出数据库
mysqldump -u wp_user -p wordpress_db > db-backup.sql
第二步:传输到新服务器
# 使用SCP传输
scp site-backup.tar.gz user@newserver:/var/www/
scp db-backup.sql user@newserver:/tmp/
第三步:在新服务器上恢复文件
# 解压文件
cd /var/www/
tar -xzf site-backup.tar.gz
# 设置文件权限
chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html/
第四步:恢复数据库
# 创建新数据库
mysql -u root -p
CREATE DATABASE wordpress_db;
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost' IDENTIFIED BY 'password';
EXIT;
# 导入数据库
mysql -u wp_user -p wordpress_db < /tmp/db-backup.sql
第五步:修改wp-config.php
如果新服务器的数据库信息不同,需要修改wp-config.php:
define('DB_NAME', '新数据库名');
define('DB_USER', '新用户名');
define('DB_PASSWORD', '新密码');
define('DB_HOST', 'localhost');
第六步:替换URL(如果换了域名)
如果域名也换了,需要替换数据库中的旧URL:
# 使用WP-CLI替换(推荐)
wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables
# 或使用Search Replace DB脚本
不要直接用SQL的REPLACE语句,因为WordPress数据库中有序列化数据,简单替换会破坏数据结构。
第七步:切换DNS
确认新服务器一切正常后,修改域名DNS指向新服务器IP:
A记录:@ → 新服务器IP
A记录:www → 新服务器IP
DNS传播通常需要几分钟到几小时。因为之前已经降低了TTL,所以传播会比较快。
迁移后的检查
| 检查项目 | 方法 |
|---|---|
| 首页是否正常 | 浏览器访问 |
| 文章能否打开 | 随机检查几篇 |
| 图片是否显示 | 查看文章中的图片 |
| 后台能否登录 | 用管理员账号登录 |
| 插件是否正常 | 后台检查插件状态 |
| 固定链接 | 重新保存一次 |
| SSL证书 | 确认HTTPS正常 |
| 表单功能 | 测试联系表单 |
常见问题
迁移后白屏
检查wp-config.php的数据库连接信息是否正确,检查PHP版本是否兼容。
图片显示不了
可能是URL没有替换完全,用Search Replace DB再跑一遍。也可能是文件权限问题,检查wp-content/uploads目录的权限。
固定链接404
在后台 → 设置 → 固定链接中重新保存一次。如果还不行,检查Nginx/Apache的重写规则。
备份旧服务器
迁移完成并确认新服务器运行正常后,不要急着删除旧服务器上的数据。建议保留至少一个月,以防万一。
总结
网站迁移的核心就是三步:备份旧站、恢复到新站、切换DNS。新手用All-in-One WP Migration最省心,有技术基础的推荐手动迁移。不管用哪种方法,迁移前一定要做好完整备份,迁移后一定要仔细检查。