15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
21.10.2024
1 +1

如何在WordPress中使用All-in-One WP Migration:完整技术指南

All-in-One WP Migration 是一款 WordPress 插件,它将您的整个网站——数据库、媒体上传、主题、插件和核心配置——序列化为单个可移植的 .wpress 归档文件,然后可以导入到任何 WordPress 安装中,无需手动操作数据库。它是完整网站迁移或时间点备份的最快途径,无需接触 phpMyAdmin、SSH 或原始 SQL 转储。

本指南超越了基本的点击操作。它涵盖了完整的迁移工作流程、导致大多数导入失败的关键技术限制、PHP 配置调优、URL 序列化行为,以及通常被跳过并在后来导致生产事故的迁移后验证步骤。

插件底层实际运行机制

在接触仪表板之前,了解插件的内部机制可以防止大型迁移过程中出现意外。

当您触发导出时,All-in-One WP Migration 执行以下操作序列:

  1. 将 WordPress MySQL 数据库转储为临时工作目录中的纯 SQL 文件。
  2. 序列化数据库中的所有 PHP 对象数据(选项、小部件配置、文章元数据),并将绝对 URL 重写为占位符令牌,以便在导入时重写。
  3. wp-content/uploads、活动主题文件和插件目录与 SQL 转储一起打包。
  4. 将所有内容包装成 .wpress 归档文件,这是一种自定义格式——不是标准的 ZIP 或 TAR——具有自己的清单头。

导入时,过程相反:归档文件被解包,SQL 在新数据库上重放,URL 占位符令牌被替换为新站点 URL。这个 URL 重写步骤是插件能够优雅处理域名更改而无需单独进行 wp-cli search-replace 操作的原因——尽管您仍应验证它,如迁移后部分所述。

第 1 步:在源站点上安装插件

登录到您现有的 WordPress 仪表板,导航到插件 > 添加新插件。搜索 All-in-One WP Migration,安装并激活它。免费版本适用于低于服务器上传大小阈值的站点(通常为 128 MB 到 512 MB,具体取决于主机的 PHP 配置)。

激活后无需任何配置。插件会立即在左侧边栏中注册自身。

第 2 步:导出您的网站

在仪表板侧边栏中导航到 All-in-One WP Migration > 导出

点击导出到并选择文件。插件将开始打包您的站点。对于 500 MB 以下的典型站点,这需要 30 秒到 3 分钟。对于拥有大型媒体库的多 GB 站点,请预计需要 10 到 20 分钟。

导出中包含的内容:

  • 完整的 MySQL 数据库转储(所有带有配置前缀的表)
  • wp-content/uploads 目录
  • wp-content/themes 中的活动和非活动主题
  • wp-content/plugins 中的所有已安装插件
  • wp-config.php 出于安全原因被有意排除——目标站点自己的 wp-config.php 在导入时会被保留

默认排除的内容:

  • 垃圾评论
  • 文章修订版本
  • 未使用的主题和已停用的插件(可通过高级选项切换进行配置)
  • 错误日志和缓存目录

高级选项部分允许您排除特定表、文件路径或文章类型。在导出前使用此功能清除瞬态缓存或大型日志表,可以显著减小归档文件大小。

打包完成后,点击下载.wpress 文件保存到本地。将其存储在可靠的位置——此文件是您完整的站点备份。

第 3 步:准备目标环境

如果您要迁移到新服务器,在导入之前需要在目标位置安装一个干净的 WordPress。大多数托管环境提供一键式 WordPress 安装程序。如果您在 VPS 主机环境中工作,可以手动安装 WordPress 或使用控制面板套件。

目标 WordPress 安装不需要在主题、插件或内容方面与源站点匹配——导入将覆盖所有内容。但是,以下内容必须到位:

  • WordPress 核心已安装并可通过其管理仪表板访问
  • 数据库用户对目标数据库具有 CREATEDROPINSERTUPDATEDELETEALTER 权限
  • PHP 版本与您的插件兼容(在工具 > 站点健康下检查源站点的 PHP 版本)
  • wp-content 目录对 Web 服务器进程可写

重要提示:目标站点的域名或子域名不需要与源站点匹配。插件在导入期间会重写 URL。但是,如果您迁移到完全相同的域名(例如,在服务器之间移动),DNS 传播时间很重要——在验证导入之前不要更新 DNS。

第 4 步:在目标站点上安装插件

在新的 WordPress 实例上重复安装过程:插件 > 添加新插件,搜索 All-in-One WP Migration,安装并激活。

当人们设置新的 WordPress 安装并假设插件已存在时,这一步经常被忽略。实际上不会——导入过程要求插件已在目标站点上处于活动状态。

第 5 步:在导入前增加上传大小限制

这是最常见的失败点。All-in-One WP Migration 的免费版本遵守服务器的 PHP 上传限制。如果您的 .wpress 文件超过该限制,导入将静默失败或抛出模糊错误。

通过导航到 All-in-One WP Migration > 导入来检查当前限制。插件直接在该屏幕上显示最大上传大小。

要增加它,请根据您的服务器访问级别使用以下方法之一:

方法 1:直接编辑 php.ini(推荐用于 VPS 和独立服务器)

upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 512M
max_execution_time = 300
max_input_time = 300

保存后重启 PHP-FPM 或 Apache:

sudo systemctl restart php8.1-fpm
# or for Apache with mod_php:
sudo systemctl restart apache2

方法 2:通过 .htaccess 覆盖(共享主机环境)

php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
php_value max_execution_time 300

方法 3:通过 wp-config.php 覆盖

@ini_set('upload_max_filesize', '512M');
@ini_set('post_max_size', '512M');
@ini_set('memory_limit', '512M');

应用更改后,刷新插件中的导入页面以确认新限制已生效。如果您使用的是共享虚拟主机方案,请联系您的主机提供商在服务器级别提高 PHP 限制,因为 .htaccess 覆盖可能受到限制。

超大型站点的替代方案:使用免费插件结合官方”Basic”扩展,或通过 FTP/SFTP 将 .wpress 文件直接上传到 wp-content/ai1wm-backups/,然后从导入屏幕中选择它。这完全绕过了 HTTP 上传大小限制。

第 6 步:导入归档文件

在目标站点上,导航到 All-in-One WP Migration > 导入

点击从 > 文件导入并选择您的 .wpress 归档文件。插件将上传文件,然后开始恢复过程。进度条跟踪操作进度。

导入期间发生的事情:

  1. .wpress 归档文件被解包到 wp-content 下的临时目录中
  2. 现有数据库被删除并替换为导入的 SQL 转储
  3. wp-content 中的文件被归档版本覆盖
  4. URL 令牌被替换为新站点 URL(从 wp-config.php 中提取)
  5. 插件提示您完成最终确认

导入完成后,您将看到确认对话框。点击继续(或根据插件版本点击恢复)以确认数据库替换。此操作在没有目标数据库单独备份的情况下是不可逆的。

导入完成后您将立即被注销。这是预期行为——数据库现在包含来自源站点的用户账户。使用源站点的凭据登录。

第 7 步:刷新固定链接

重新登录后,导航到设置 > 固定链接。不要更改任何设置。只需滚动到底部并点击保存更改

这会强制 WordPress 为新环境重新生成 .htaccess 重写规则。跳过此步骤会导致所有文章和页面 URL 返回 404 错误,即使内容存在于数据库中。

如果您运行的是 Nginx 而不是 Apache,则没有 .htaccess 文件。您必须确保您的 Nginx 服务器块包含标准 WordPress try_files 指令:

location / {
    try_files $uri $uri/ /index.php?$args;
}

第 8 步:迁移后验证清单

在验证此列表上的每个项目之前,迁移尚未完成。跳过验证是破损站点进入生产环境的原因。

URL 和域名完整性:

  • 访问设置 > 常规,确认 WordPress 地址和站点地址均反映正确的目标 URL
  • 运行搜索替换检查:在服务器上安装 WP-CLI 并运行 wp search-replace 'olddomain.com' 'newdomain.com' --dry-run 以捕获插件在序列化数据中遗漏的任何 URL
  • 如果从 HTTP 迁移到 HTTPS,请在浏览器开发者工具中检查混合内容警告

功能测试:

  • 测试所有导航菜单和内部链接
  • 提交至少一个联系表单并验证送达情况
  • 如适用,测试 WooCommerce 结账流程
  • 验证媒体附件是否正确加载(图片损坏通常表明 wp_posts 表中存在遗漏的 URL 重写)

安全和配置:

  • 确认您的 SSL 证书在目标域名上处于活动状态并强制执行 HTTPS
  • 检查目标站点上的 wp-config.php——数据库凭据、WP_DEBUG 状态和密钥应反映新环境,而不是源站点
  • 通过设置 > 常规或使用 WordPress 密钥生成器替换 wp-config.php 中的密钥常量来重新生成 WordPress 安全密钥

缓存:

  • 清除所有缓存层:对象缓存(Redis/Memcached)、页面缓存插件(WP Rocket、W3 Total Cache)以及任何 CDN 缓存
  • 停用并重新激活缓存插件,强制它们检测新的环境路径

对比:All-in-One WP Migration 与其他迁移方法

方法所需技术技能支持大型站点URL 重写费用最适合
All-in-One WP Migration(免费版)受上传上限限制自动免费中小型站点
All-in-One WP Migration(高级版)是(无大小限制)自动付费任意站点大小
WP-CLI + rsync + mysqldump手动(`search-replace`)免费开发者、大型站点
Duplicator Pro半自动付费代理机构、多站点
手动(phpMyAdmin + FTP)手动免费完全控制场景
cPanel/Plesk 备份恢复无(相同域名)包含在主机服务中同主机迁移

迁移到 VPS 或独立服务器

如果您要从共享主机迁移到 VPS 主机独立服务器环境,All-in-One WP Migration 工作流程是相同的,但目标服务器设置需要额外注意:

  • 安装 LAMP 或 LEMP 堆栈(Apache/Nginx、MySQL/MariaDB、PHP)
  • 配置指向 WordPress 文档根目录的虚拟主机
  • 创建具有适当权限的专用 MySQL 数据库和用户
  • 在运行插件导入之前安装 WordPress 核心
  • 配置 PHP-FPM 池设置以匹配或超过源站点的资源要求

对于偏好托管控制面板界面的团队,带 cPanel 的 VPS 可以显著减少服务器配置开销——cPanel 提供一键式 WordPress 安装程序、PHP 版本切换器和文件管理器,简化了导入前的设置。

常见错误及修复方法

“导入失败:无法解压归档文件”

这通常意味着 .wpress 文件已损坏、上传被中断,或目标站点磁盘空间不足。验证文件大小是否与原始文件匹配,使用 df -h 检查可用磁盘空间,并通过 SFTP 直接重新上传到 wp-content/ai1wm-backups/

“超过最大执行时间”

PHP max_execution_time 指令对于导入大小来说太低。如上所示,在 php.ini.htaccess 中将其增加到 300 或 600 秒。

“上传的文件超过 upload_max_filesize 指令”

上传大小限制未提高,或更改未应用于正确的 PHP 配置文件。从命令行运行 php -i | grep upload_max_filesize 以确认哪个 php.ini 处于活动状态。

php -i | grep upload_max_filesize
php -i | grep "Loaded Configuration File"

导入后出现白屏死机

wp-config.php 中临时启用 WP_DEBUG 以显示实际的 PHP 错误:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

然后检查 /wp-content/debug.log 以获取具体错误。常见原因是插件与目标 PHP 版本不兼容或内存限制耗尽。

迁移后图片损坏

wp_postswp_postmeta 表中针对旧域名运行数据库搜索替换。使用 WP-CLI:

wp search-replace 'https://olddomain.com' 'https://newdomain.com' wp_posts wp_postmeta --precise --report-changed-only

技术决策矩阵:何时使用 All-in-One WP Migration

场景推荐方法
站点低于 512 MB,迁移到新主机免费版,直接文件上传
站点超过 512 MB通过 SFTP 将 `.wpress` 上传到 `ai1wm-backups/` 或使用高级版
从 HTTP 迁移到 HTTPS导入后运行 WP-CLI `search-replace` 以捕获序列化 URL
迁移多站点网络使用高级版;免费版不支持多站点
自动定期备份改用专用备份插件(UpdraftPlus、BackWPup)
迁移到不同的 PHP 版本在生产导入之前在暂存环境中测试插件兼容性
涉及域名更改导入后在设置 > 常规中验证 URL 重写

实用关键要点

  • 对于超过 200 MB 的站点,始终通过 SFTP 将 .wpress 文件直接上传到 wp-content/ai1wm-backups/——这可以避免所有 HTTP 上传大小限制。
  • 在开始导入之前,而不是在遇到错误后,在目标站点上提高 upload_max_filesizepost_max_sizememory_limitmax_execution_time
  • 插件从归档文件中排除 wp-config.php——您的目标数据库凭据会被保留,但导入后请手动验证 WP_DEBUGWP_SITEURL 和安全密钥。
  • 导入后立即刷新固定链接。在 Nginx 上,验证服务器块中是否存在 try_files 指令。
  • 在任何涉及域名更改的迁移后运行 wp search-replace --dry-run,以捕获插件可能遗漏的序列化 URL 残留。
  • 在上线之前确认 SSL 在目标站点上处于活动状态——迁移后的 SSL 证书不匹配是导致浏览器安全警告的常见原因,会损害用户信任。
  • 对于生产迁移,始终先在暂存环境中测试,尤其是在更改 PHP 版本或在差异显著的服务器堆栈之间迁移时。

常见问题解答

All-in-One WP Migration 是否支持将 WordPress 迁移到不同域名?

是的。插件在导入期间使用对 SQL 转储的令牌替换过程自动将源域名重写为目标域名。导入后,通过检查设置 > 常规并运行 WP-CLI search-replace --dry-run 来验证重写是否成功,以捕获插件可能遗漏的嵌入在序列化 PHP 数据中的任何 URL。

免费版支持的最大文件大小是多少?

免费版在插件本身中没有硬编码的大小限制——限制完全来自服务器的 PHP upload_max_filesizepost_max_size 指令。在许多共享主机上,默认值为 128 MB。您可以通过 SFTP 将 .wpress 文件上传到 wp-content/ai1wm-backups/ 并从导入屏幕中选择它来完全绕过此限制,这跳过了 HTTP 上传机制。

迁移是否会完全覆盖目标站点的数据库?

是的。导入会删除目标数据库中的所有现有表,并用源站点的表替换它们。如果目标数据库包含您需要保留的任何数据,请在导入之前备份目标数据库。

我可以使用 All-in-One WP Migration 进行 WordPress 多站点迁移吗?

免费版不支持多站点网络迁移。导出和导入完整的多站点网络需要高级版”Multisite Extension”。网络中的单个子站点有时可以使用免费版作为独立站点迁移,但这需要手动清理特定于网络的数据库条目。

为什么导入完成后我立即被注销?

这是正确的行为。导入用源站点的数据替换了整个数据库,包括 wp_users 表。您的目标站点管理员账户不再存在——源站点的用户账户现在处于活动状态。使用原始源站点的用户名和密码登录。

15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用