如何把 WordPress 网站迁移到新的 VPS
迁移 WordPress 网站,就是迁移三样东西:文件(首先是 wp-content 文件夹)、数据库,以及域名的 DNS 记录。最简单的方式是使用迁移插件。手动的话,需要复制文件、导出数据库、在新服务器上导入,并在地址发生变化时修正地址。
无论选哪种方法,顺序都一样:先备份,在新服务器上测试,最后再处理 DNS。在新网站正常运行之前,不要关闭旧服务器。
开始之前
- 做一次完整备份。在您自己的电脑上保存一份文件和数据库的副本。WordPress 官方迁移指南也要求在对数据库做任何更改之前先备份。
- 弄清大小。
wp-content文件夹和数据库各有多少 MB?这决定了哪种方法适合您。 - 对比版本。新服务器上的 PHP 版本能兼容您的旧插件吗?不兼容的插件请在迁移之前先更新。
- 降低 TTL。在切换前一两天,把域名 DNS 记录的 TTL 设为 300 秒。这样旧地址不会在缓存中停留太久。
- 确认邮件在哪里。更改 A 记录不会影响 MX 记录。如果您的邮件运行在网站所在的服务器上,需要另外迁移。
方法 1:用插件迁移
迁移插件会把文件和数据库打包成一个包,并在新网站上解开,大多数还会修正地址。常见的做法有三种:
- 在浏览器中上传包。在旧网站上生成包,在新的 WordPress 上安装同一个插件并上传这个包(例如 All-in-One WP Migration 就是这样工作的)。这种做法会遇到服务器的上传大小限制。
- 用 SFTP 放置包。Duplicator 这类插件要求您把压缩包和一个
installer.php文件复制到新服务器上的一个空文件夹,然后在浏览器中打开installer.php。您需要事先创建好数据库及其用户。完成后,请删除installer.php和压缩包,因为任何知道地址的人都可能再次运行这个安装程序。 - 从远程存储恢复。使用 UpdraftPlus 这类备份插件时,在新网站上连接同一个云存储,然后通过“Rescan remote storage”链接找到备份。您不必通过浏览器上传大文件。
一键 WordPress 服务器上的 64 MB 限制
在 Seturack 的一键 WordPress 服务器上,单次最多可以上传 64 MB。通过浏览器接收包的插件会碰到这个限制。如果您的包更大,请使用远程存储恢复,或者手动迁移网站。因为一键应用运行在 Docker 中,文件不在传统安装时所处的位置。对于要手动迁移的大型网站,安装了 Apache 或 Nginx 的干净 Ubuntu 服务器更容易预测。
方法 2:手动迁移
这些步骤适用于文件位于 /var/www/html 的传统安装。如果以 root 身份运行 WP-CLI,请在它的命令后加上 --allow-root。在旧服务器上,进入 WordPress 文件夹:
- 把数据库导出到 Web 文件夹之外,因为留在里面的转储文件,任何知道地址的人都可以下载:
wp db export ~/site.sql。没有 WP-CLI 的话,用mysqldump -u USER -p DATABASE > ~/site.sql。 - 用
tar -czf ~/files.tar.gz .打包文件 - 用
scp ~/site.sql ~/files.tar.gz user@NEW_IP:~/把两个文件复制到新服务器
在新服务器上:
- 创建一个空数据库和它的用户。
- 用
tar -xzf ~/files.tar.gz -C /var/www/html把文件解压到 Web 文件夹 - 在
wp-config.php中,把数据库名、用户和密码更新为新的值。把所有权交给 Web 服务器用户(Debian 和 Ubuntu 上是www-data)。 - 用
wp db import ~/site.sql导入数据库。这条命令从wp-config.php读取设置,而且不会替您创建数据库。
如果域名不变,就不需要修正地址。如果域名变了,请把旧地址替换为新地址。先用 --dry-run 试一下,并且不要动 guid 列:
wp search-replace 'https://old.com' 'https://new.com' --skip-columns=guid --dry-run
如果输出看起来没问题,就去掉 --dry-run 再运行一次。不要对数据库做简单的查找替换,因为序列化的数据可能被破坏。WP-CLI 能正确处理这类数据。
切换 DNS 之前先在新服务器上测试
把新服务器的 IP 地址和您的域名添加到您电脑上的 hosts 文件中。该文件在 Windows 上位于 C:\Windows\System32\drivers\etc\hosts,在 macOS 和 Linux 上位于 /etc/hosts:
203.0.113.10 example.com www.example.com
从此只有您的浏览器会打开新服务器,其他人看到的仍是旧服务器。试一试登录、页面、图片和表单,然后删除这一行。HTTPS 证书通常在 DNS 指向新服务器后签发。
切换 DNS
- 如果网站一直有写入(商店、会员、评论),请把旧网站设为维护模式,最后再导出一次数据库并传输。否则,切换期间产生的订单会丢失。
- 在您的 DNS 面板中,把 A 记录指向新的 IP 地址,www 也一样处理。绑定您自己的域名一文中有具体步骤。
- TTL 较低时,变更会很快传开。有些网络可能会把旧记录保留更久。
- 确认新服务器上的 HTTPS 正常工作。
- 一切正常后,把 TTL 改回原来的值。保留旧服务器几天,然后再关闭。
迁移之后的检查清单
- 打开设置 > 固定链接,点击保存,以刷新重写规则。
- 打开首页、一篇文章、一张图片和联系表单。
- 留意混合内容警告。修正地址可以解决其中大部分。
- 测试邮件发送,并检查您的 SMTP 插件的设置。
- 清除缓存插件的缓存。
- 删除两台服务器上的
~/site.sql和~/files.tar.gz。两者都包含敏感数据。 - 在设置 > 阅读下,确认“建议搜索引擎不索引本站点”的复选框没有勾选。
如果用插件迁移,从一个空的 WordPress 开始会更容易。预装 WordPress 的服务器大约 3.5 到 4 分钟就能准备好。请看一下 WordPress 服务器页面。
评论0
暂无评论
成为第一个分享想法的人。
请登录或注册后发表评论。