本文译自 kikomono.com 英文原文《Move a WordPress site to a new VPS: what to check before you switch DNS》,作者 Rita。原文链接:https://kikomono.com/guides/move-wordpress-site-to-new-vps/
WordPress 搬家成败看的是顺序,不是工具。先降低 DNS 的 TTL,再在新服务器上建好副本,像正式上线一样测一遍,然后才切 DNS——旧服务器留着,直到新服务器在真实流量下不出错地跑上一阵。
一句话答案
把 WordPress 网站搬到新 VPS 是四件按固定顺序做的事:准备 DNS、复制网站、测试副本、切换流量。最常见的失败是顺序做反了——DNS 切到了一台从没跑过这个站的服务器上,然后当着访客的面排错。下面每一步都是一次检查,不是猜测:哪一步没过,就停下来修好再往下走。
顺序重要,因为每一步都在保护下一步。TTL 降下来了,切换才快、回滚才快。副本测过了,切换才平淡无奇。旧服务器还开着,切换出问题才有退路。少了任何一步,另外两步都救不了你。
第 1 步:搬家前一两天,先降低 DNS 的 TTL
DNS 记录自带 TTL——就是告诉解析器可以缓存多久。如果域名的 TTL 很长,一次 DNS 改动要很久才能传到每个访客那里,回滚也要同样久。搬家前一两天先把要改的记录的 TTL 调低,让这个更短的值有时间在旧服务器还在服务所有人的时候扩散开。
别在同一个小时里既降 TTL 又切 DNS:之前缓存了旧的长 TTL 的解析器还会继续按它来。等,就是这一步的意义。记下当前的 TTL 和你改它的时间,这样你才知道短 TTL 什么时候生效。
第 2 步:搭好新服务器,复制网站
先搭好新 VPS:Web 服务器、PHP、数据库和防火墙,能做到的话,大版本和旧站保持一致。我们的英文原文中的新 VPS 防火墙检查讲的是最先要锁好的东西;英文原文中的核查存储是否真是 NVMe 值得现在就做,趁服务器还是空的时候。
然后把网站分两部分复制:文件和数据库,而且要取自同一时刻、成对地拿。文件是网站根目录下的全部东西:核心、主题、插件和上传文件。数据库装着文章、设置和用户。两个不同时刻取的副本可能自相矛盾——一张图到了晚到的副本里,或者两次导出之间改了一个设置。网站忙的话,取副本时短暂开一下维护模式,让取副本期间什么都不变。
复制之前,先给线上网站做个备份,存在两台服务器之外的地方。我们的英文原文中的备份恢复测试讲的是怎么证明这个备份真的能用;搬家是最糟糕的发现备份不能用的时刻。
第 3 步:在副本上修正网站地址
如果域名不变,WordPress 里存的网站地址也不变——但要确认,而不是默认。WordPress 把地址存在“设置 > 常规”里,分别是 WordPress 地址和站点地址。WordPress 自己的迁移指南还写了另外两种办法,适用于进不了管理后台时:在 wp-config.php 里定义 WP_HOME 和 WP_SITEURL,或者用临时的 RELOCATE 标记——用完必须再删掉,因为留在那里,任何人都能改你的网站地址。
别对数据库做纯文本的查找替换来改地址。WordPress 有些设置以序列化数据的形式存储,每个值都带着自己的长度;粗暴替换改了长度却没更新计数,会把值弄坏。用专为序列化查找替换做的工具,或能处理这件事的迁移插件,并在上生产之前先在预发布环境里检查结果。
第 4 步:像正式上线一样测试副本
把域名指向新服务器的 IP,写进你自己电脑的 hosts 文件,或者用一个临时主机名,在不动公开 DNS 的情况下浏览副本。检查访客和编辑真正用的东西,不只是首页。
| 检查项 | 通过的样子 |
|---|---|
| 首页和一个内页 | 都能加载,样式和图片正常,没有报错,没有混合内容警告 |
| 管理员登录 | 能登录,进得了仪表盘,没有重定向循环 |
| 最新内容 | 最新文章和它的图片都在,日期完好 |
| 表单和评论 | 测试表单能提交,测试评论能保存 |
| 媒体和上传 | 图片能打开;新上传的文件落进了上传文件夹 |
| 证书 | 新服务器上的 HTTPS 对真实域名有效,或者能在切换时及时签发 |
| 定时任务 | 网站依赖的 cron 任务在新服务器上有,不只在旧服务器上有 |
哪项检查没过,副本就没准备好,DNS 就还不能动。预发布环境里的失败是有用的;DNS 切完之后再失败,就是一次故障。
第 5 步:切 DNS,然后两台服务器一起盯着
把 DNS 记录改成新服务器的 IP,两台服务器一起看。有的访客会马上到达新服务器;有的在缓存记录过期之前还会继续到达旧服务器。这种重叠是正常的,也正是旧服务器必须再开几天、保持正确的原因:落在旧副本上的访客提交表单或留言,写的是你马上要丢弃的数据。
在这个窗口里,除非你清楚自己眼前是哪一台在服务,否则不要在任何一台副本上发布、编辑或接单——看服务器,不要凭记忆。如果网站接受评论、订单或注册,切换时考虑开一段短暂的维护窗口,别让提交落到错的那台副本上。
切换之后,查新服务器的错误日志,不只看首页。页面能打开,不等于某个插件、定时任务或上传路径没有在悄悄失败。然后确认证书对真实域名有效、能自动续期,再把第 4 步的检查项对着线上域名重新过一遍。
旧服务器什么时候能撤
只有新服务器在真实流量下跑了几天、日志里没有错误,而且你手里有一份新服务器的新鲜备份——验证过的,不是想当然的——之后,才能取消旧 VPS。在那之前,旧服务器就是你的回滚方案:新服务器要是出问题,DNS 几分钟就能指回一个能用的副本,因为 TTL 已经降下来了。
取消之前,确认没有别的东西还指着旧服务器:一个子域名、一条邮件路由、一个定时任务,或者一把绑了它 IP 的 API 密钥。取消的是服务器,不是数据:旧副本的最后一份备份,搬家后留一个月,以防有什么事后来才冒出来。
五个悄悄出问题的点
1. 查找替换弄坏了序列化数据。数据库里改一个地址的长度,却没更新它存着的计数,会悄悄弄坏一个设置。网站可能照常打开,而一个小工具、插件设置或菜单悄悄丢了值。
2. 上传文件落下了。数据库副本很小,上传文件夹很大,所以它是最常被跳过或截断的部分。缺失的图片会一张一张地冒出来,几天之后才发现。
3. 旧服务器还在收写入。DNS 重叠期间落在旧副本上的评论、订单和表单提交,永远到不了新服务器。切换时开维护窗口能防住这件事;事后发现就补不回来了。
4. 没人搬走的 cron 任务。定时文章、备份和插件任务住在服务器上,不在 WordPress 数据库里。网站可能看着正常跑一周,然后悄悄停掉定时发布。
5. 新服务器上从没签发过的证书。旧服务器的证书不会跟着文件一起搬家。新服务器上 HTTPS 没准备好,访客会在你刚告诉他们网站搬了家的那一刻撞上浏览器警告。
适用范围与延伸阅读
WordPress 自己的迁移文档(2026-11-09 核查)是本指南里地址设置、wp-config.php 常量和 RELOCATE 标记的权威来源:Migrating WordPress — Advanced Administration Handbook,链接:https://developer.wordpress.org/advanced-administration/upgrade/migrating/ 。本指南讲的是单个 WordPress 站点换一台服务器、域名不变的情况;多站点网络或换域名,需要那本手册里的额外步骤。如果搬家是被流量增长逼出来的,而不是换服务器,先读英文原文中的流量涨起来先坏什么——更大的服务器解决的是容量问题,不是解决一个撑不住的插件。选新服务器本身,见英文原文中的怎么选第一台 VPS。
本页的来源链接不是联盟链接。这里讲的 DNS 和证书行为是通用做法;具体步骤以你自己的主机商或 DNS 服务商的后台为准。
发表回复