各个方面叨叨叨

WordPress 迁到雨云香港 VPS:用 1Panel 备份、恢复与修复旧网址

WordPress 迁到新 VPS 时,如何保持数据库与文件备份一致、恢复网站,并用 WP-CLI 修复旧域名与后台跳转。

文章目录

WordPress 搬家后,首页能打开,文章里的图片却还在请求旧服务器;后台跳回旧域名,或者某个插件的设置丢了。这些问题通常要从数据库、网站文件和网址配置一起查,重新安装一遍 WordPress 并不能把旧站搬过来。

下面按“旧站仍可访问,迁到一台用 1Panel 管理的新 VPS”处理。先在副本上完成恢复,再切换域名。迁站期间不同时升级 WordPress、PHP 和插件,出错时才容易找到原因。

新服务器按旧站的负载选

已有可用的 VPS,可以直接准备恢复环境。需要购买新机器时,个人博客可以考虑雨云香港的“中国香港 → 极速三网[三区] → AMD EPYC → 流量不限型”。插件较多、数据库也放在同一台机器上,我更建议从 2 核 4GB 开始;只有简单文章和少量插件,可以先看 2 核 2GB。这里是配置建议,不是 WordPress 的内存门槛,也不能据此推算访问人数。

2026 年 10 月 6 日,默认 40GB SSD 云盘、一个普通独立 IPv4、不使用账户优惠券时,购买页显示:

配置 月付及消费返利 年付七折及消费返利
2 核 2GB,上传 5Mbps、下载 10Mbps 38 元,返 7.6 元 319.2 元,返 63.8 元
2 核 4GB,上传 8Mbps、下载 15Mbps 53 元,返 10.6 元 445.2 元,返 89 元

通过雨云入口注册,优惠码填 KuZhuJi。消费返利以积分发放,可以用于续费,或按平台规则兑换、提现。更换规格、购买时长或使用优惠券后,实付与返利会变化,购买前看“立即购买”下方的金额。先月付完成迁站检查,再决定是否长期使用。

备份要能拼回同一个时间点

先记下旧站的 WordPress、PHP 和数据库版本、表前缀、插件清单以及固定链接格式。数据库保存文章、评论、用户和设置;文件保存主题、插件和上传内容,两份都要有。

在 1Panel 查看 WordPress 容器的实际挂载目录。应用模板通常把 ./data 挂到 /var/www/html,这个相对路径属于应用自己的目录,不能直接理解成服务器根目录下的 data。备份整个实际目录,包含 wp-content、wp-config.php 和隐藏文件;如果媒体存放在对象存储,再单独保留存储配置与文件副本。

安排短暂维护窗口,暂停编辑、评论、上传,以及会写入数据库的外部任务。停止 WordPress 应用容器后,数据库服务仍需运行,通过 1Panel 的数据库备份入口导出该站数据库,再打包网站文件。仅挂一个维护页面不一定会停止定时任务,不能把它当成已经冻结了所有写入。

给数据库与文件备份写上同一个批次日期,下载到服务器以外的地方。确认 SQL 可以导入测试库,压缩包能解开,上传目录里的文件也在。面板提示“备份成功”后,仍要做一次恢复检查。

先恢复到副本,别覆盖唯一的旧库

新机器装好 1Panel 后,建立独立数据库和只用于这个站点的用户,选择与旧站兼容的数据库版本。准备 WordPress 应用,先停下应用容器,在它的实际挂载目录恢复旧站文件,再把 SQL 导入新数据库。

检查 wp-config.php 的数据库名、用户、密码和表前缀。如果应用由环境变量提供数据库配置,还要同步修改应用的持久配置;只改容器里的临时文件,重建后可能失效。数据库容器的地址应是应用网络可达的服务地址,另一个容器里的 localhost 并不指向它。

恢复后若出现全新的安装页,先停下来检查数据库连接和表前缀,不要继续安装。文章已经在旧表里,重新初始化不会帮你找到它们。

域名不变时,可以在自己的电脑上临时用 hosts 将正式域名指向新机器,检查目标服务器;这是本地测试,不影响其他读者。证书需要覆盖正式域名,使用 DNS 验证申请证书时也要确认授权范围。测试副本暂时不要发出通知、邮件或重复执行外部任务。

换域名时,用能处理序列化数据的替换方式

只换服务器、域名和协议都不变,通常不需要全库替换网址。只有旧域名换成新域名,或者 HTTP 改成 HTTPS,才处理对应地址。

下面是单站点的 WP-CLI 示例。前提是当前执行环境已经安装 WP-CLI 和相应数据库客户端,能读取 WordPress 文件并连接新数据库;普通 WordPress 容器不一定内置这些工具。进入实际 WordPress 目录,以有权限的站点运行用户执行,示例域名换成自己的地址。

先单独导出修改前的新库,再只预览替换:

wp db export before-url-change.sql
wp search-replace 'https://old.example.com' 'https://new.example.com' --all-tables-with-prefix --skip-columns=guid --dry-run

确认表前缀只属于这个站,变更数量与涉及的表合理,再运行正式替换:

wp search-replace 'https://old.example.com' 'https://new.example.com' --all-tables-with-prefix --skip-columns=guid
wp option get home
wp option get siteurl

WP-CLI 的 search-replace 可以处理 PHP 序列化数据。直接在 SQL 文件里全局替换域名,可能破坏序列化字符串长度。示例跳过 guid 列,避免把文章标识当成普通链接改掉;插件自定义表是否在这个前缀范围内,需要另外确认。多站点网络的表范围、站点地址配置不同,不要原样套用这组单站点命令。

如果 wp-config.php 固定定义了 WP_HOME 或 WP_SITEURL,数据库中的值改了也可能继续被覆盖,还要检查这两项。SQL 导出文件含有站点数据,应放在非公开目录,检查完成后妥善归档,不能留在网站可下载的位置。

切换前,检查内页和后台

至少打开一篇旧文章、一个分类页和一张原始图片,试一次后台登录、编辑保存和新文件上传。首页正常而内页 404,优先看固定链接和反向代理的重写规则;图片仍去旧域名,查文章内容、主题配置及对象存储地址;后台反复跳转,查实际 HTTPS、代理传递的协议和站点 URL。

这些检查通过后,再短暂停止旧站写入,把最终数据库和新增文件补齐,切换 DNS。旧机器暂时保留,避免 DNS 缓存尚未更新时,有人往旧站提交了新评论。切换完成后重新检查新站,再开启计划任务和邮件。

后续在 1Panel 设置数据库与网站文件的定期备份,保留多个历史批次,并存到这台 VPS 以外。第一次完整恢复成功的那一套备份值得留下;以后改插件、换 PHP 或搬服务器,都能从它开始排查。

继续阅读 · 建站与运维 返回顶部