第一次给WordPress搬家的时候,我犯了所有能犯的错。
那时候原来的虚拟主机越来越慢,我买了台新的VPS,准备把网站搬过去。之前选服务器的时候就纠结过配置,这次搬家更是把问题放大了。我以为搬家就是”把文件拷过去就行”,结果折腾了整整两天——数据库导出来导入不进去,图片全部404,后台登录白屏,最后连网站都打不开了。
那次之后我才知道,WordPress搬家不是”复制粘贴”,它有几个关键步骤,走错一步就可能出问题。这篇文章就是我两次搬家(一次搞砸了,一次顺利)之后,总结出来的正确流程。
搬家前先做一件事:记下所有关键信息
很多人搬家出问题,不是因为操作错了,是因为信息没记全。比如数据库密码忘了、FTP账号找不到、旧服务器已经过期了才发现数据没备份。
在动手之前,把这些信息记在一个记事本里:
| 记什么 | 在哪找 |
|---|---|
| 旧站FTP/SFTP账号密码 | 服务器商控制面板或宝塔面板 |
| 旧站数据库名、用户名、密码 | 宝塔面板 → 数据库,或查看wp-config.php |
| 旧站phpMyAdmin地址 | 宝塔面板 → 数据库 → 管理 |
| 新站服务器IP、面板入口 | 服务器商发你的邮件 |
| 新站数据库名、用户名、密码 | 新建数据库时自己设的 |
| 域名(如果换域名的话) | — |
我当时犯的第一个错就是:旧服务器已经过期了,我才想起来数据库密码没记。最后只能找服务器商临时恢复,多花了好几十块钱。
方法一:用插件搬家(适合新手,最简单)
如果你不想碰命令行、不想手动操作数据库,用插件是最省事的。我用了两次All-in-One WP Migration插件,一次成功一次失败——失败那次是因为备份文件太大,超过了插件的免费版限制。
步骤:
- 在旧站后台安装并启用”All-in-One WP Migration”插件
- 点击”导出 → 导出到 → 文件”,等它打包完成
- 下载生成的
.wpress文件到本地 - 在新站安装全新的WordPress(不需要做任何配置)
- 在新站安装同一个插件,点击”导入”,上传刚才的
.wpress文件 - 插件会自动恢复数据库、替换域名、调整文件路径
这个方法的坑: 免费版只能导出512MB以内的文件。如果你的网站文件比较大(比如有很多图片),导出会失败。我当时就卡在这里了——网站有2GB的图片,导出到一半就报错。
怎么解决: 两个办法。一是花钱买插件的付费版(不限大小),二是用下面说的手动方法。
另一个插件选择:UpdraftPlus。 这个插件免费版没有大小限制。操作流程是:旧站用UpdraftPlus备份(数据库+文件)→ 下载备份文件 → 新站装WordPress+UpdraftPlus → 上传备份文件 → 恢复。我用这个方法搬过一个1.5GB的站,很顺利。
方法二:手动搬家(适合有一点技术基础的人)
如果用插件搞不定,或者你更想自己掌控全过程,手动搬家也不难。我第二次搬家就是手动搬的,全程大概半小时。
第一步:备份旧站文件和数据库
备份文件:
用宝塔面板的话,直接进”文件”管理,把网站根目录打包下载。如果你还没装宝塔,先看看宝塔面板部署教程。或者用FTP工具(FileZilla)把整个网站目录下载到本地。
备份数据库:
进phpMyAdmin,选择你的WordPress数据库,点”导出” → 选择”快速”模式,格式选SQL → 下载.sql文件。
第二步:在新服务器上建站
在新服务器上装好宝塔面板,然后:
- 新建一个网站(填域名,PHP版本选和旧站一样的)
- 新建一个数据库(记下数据库名、用户名、密码)
- 把刚才下载的网站文件上传到新站的根目录
第三步:修改wp-config.php
这是手动搬家最容易出错的一步。找到根目录下的wp-config.php,把数据库连接信息改成新站的:
define('DB_NAME', '新数据库名');
define('DB_USER', '新数据库用户名');
define('DB_PASSWORD', '新数据库密码');
define('DB_HOST', 'localhost');
注意: 只改这四个,别动其他的。我第一次搬家的时候,手贱改了一个$table_prefix,结果整个后台都乱了。
第四步:导入数据库
进新站的phpMyAdmin,选择刚创建的数据库,点”导入” → 选择刚才下载的.sql文件 → 执行。
如果数据库文件比较大(超过50MB),导入可能会超时。解决办法:在宝塔面板的PHP设置里,把upload_max_filesize和post_max_size调大,或者用命令行导入:
mysql -u 数据库用户名 -p 数据库名 < 备份文件.sql
第五步:替换域名(如果换了域名)
如果搬家时域名也换了,需要把数据库里的旧域名全部替换成新域名。推荐用插件”Better Search Replace”——装好之后,在”旧URL”填旧域名,在”新URL”填新域名,点执行就行。
不要手动在数据库里用SQL替换,我试过一次,结果把序列化数据搞坏了,一堆设置丢失。
搬家后检查这几件事,确认没问题
搬家完先别急着高兴,逐项检查一下:
- [ ] 首页能正常打开,文章能点进去
- [ ] 后台能登录(
/wp-admin) - [ ] 图片都正常显示(不是裂图)
- [ ] 固定链接能正常访问(不是404)
- [ ] 插件功能都正常
- [ ] 旧站先别关,等新站跑了2-3天确认没问题再关
固定链接404的解决办法: 进WordPress后台 → 设置 → 固定链接 → 不用改任何设置,直接点一次”保存更改”。这个操作会刷新.htaccess文件,通常能解决404问题。
图片不显示: 如果你用了缓存插件,搬家后记得清一次缓存。如果是CDN导致的,去CDN后台刷新一下缓存。
DNS解析切换:选对时间,避免断档
搬家完成后,最后一步是把域名解析改到新服务器IP。这个操作有个延迟,DNS解析全球生效需要几分钟到几小时不等。
建议: 挑一个访问量低的时间段切换(比如凌晨),把DNS的TTL值先调低(比如改成600秒),这样切换更快。
切换期间,可能会有部分用户访问到旧站、部分用户访问到新站。如果旧站和新站内容不一样,先把旧站关掉或者设成只读,避免用户在旧站留言或下单,数据丢在新站那边。
搬过一次家之后,其实就没什么好怕的了。最大的坑不是技术问题,是”以为很简单所以没准备”。花十分钟把关键信息记下来,比搬家失败后花两天补救,划算得多。
原创文章,首发于 wujianzhan.com。