跳转到内容

迁移

迁移工具可通过网络将网站、数据库、数据库用户和项目从当前 AcePanel 服务器转移到另一台 AcePanel 服务器。 这是面板到面板的迁移:源端(你正在操作的面板)和目标端(远程服务器)都必须运行 AcePanel。

源端通过 AcePanel 经过认证的 API 连接到目标端,在目标端重新创建每个资源,并将数据流式传输过去。 进度会实时显示,并可下载完整日志。

前置条件

远程服务器必须已安装 AcePanel 且可访问。 为使迁移成功,两台服务器应运行相匹配的环境(Web 服务器必须完全相同,且你要迁移的数据库和语言运行环境应已在目标端存在)。 预检步骤会比较两端环境,帮助你在开始前发现差异。

迁移向导

迁移由一个五步向导驱动,以步骤指示器的形式显示在页面顶部:

步骤名称说明
1连接输入远程服务器信息
2预检验证环境
3选择项目选择要迁移的内容
4迁移中传输进行中
5完成查看结果

一台服务器上同一时间只能运行一个迁移任务。 如果你打开页面时已有迁移正在进行,向导会直接跳到 迁移中 步骤并重新连接到实时进度;如果迁移刚刚完成,则会打开 完成 步骤。

步骤 1:连接

输入目标(远程)AcePanel 服务器的连接详情:

字段说明
面板 URL远程面板的完整 URL,例如 https://remote-server:8888。 如果配置了面板入口路径,请一并填入。
令牌 ID在远程面板上创建的访问令牌的数字 ID(默认为 1)。
访问令牌在远程面板上创建的访问令牌的密钥值。

令牌 ID 和访问令牌是 远程 服务器的 API 凭据。 在目标面板的 设置 > 用户 > 访问令牌 下创建它们。 迁移使用这些凭据通过 HMAC-SHA256 签名对发往远程面板的每个请求进行认证,机制与 API 参考 中描述的相同。

注意

令牌 ID 是创建令牌时返回的 ID,而非用户 ID。 即使远程服务器的 TLS 证书是自签名的,迁移也会信任它,因此使用自签名证书的 HTTPS 面板无需额外配置即可工作。

点击 下一步 进行连接。 面板会联系远程服务器,读取其已安装的环境,然后进入预检。

步骤 2:预检

预检会并排比较本地和远程环境,让你在传输任何内容前确认兼容性。 比较表列出:

比较内容
Web 服务器已安装的 Web 服务器(必须匹配)
Go / Java / Node.js / PHP / Python已安装的语言运行环境和版本
数据库已安装的数据库引擎

每一行显示本地值、远程值以及一个状态标签(匹配 / 不匹配 / 不同)。 数据库这一行仅供参考,显示一个短横线而非状态标签。

预检会强制要求并对以下情况发出警告:

  • Web 服务器必须匹配。 如果本地和远程的 Web 服务器不同,检查将失败,你无法继续。 向导会报告该不匹配,并且 下一步 按钮会保持禁用状态。
  • 缺失运行环境。 如果某个语言运行环境(Go、Java、Node.js、PHP、Python)在本地已安装但在远程服务器上不存在,会出现警告,提示相关项目在迁移后可能需要重新配置。
  • 缺失数据库引擎。 如果某种数据库类型在本地存在但在远程服务器上不存在,会出现警告,提示该类型的数据库迁移将被跳过。

在你调整远程服务器后(例如安装了缺失的运行环境或数据库引擎),可使用 刷新 重新运行预检,或使用 上一步 返回并更改连接详情。 当 Web 服务器匹配时,点击 下一步 选择要迁移的内容。

步骤 3:选择项目

向导会加载本地服务器上所有可迁移的内容,并分为四个部分。 在每个部分勾选你想要传输的项目;空的部分会显示“未找到任何项目”占位提示。

  • 网站:显示每个站点的名称及其目录路径。
  • 数据库:显示数据库名称、类型(mysql / postgresql)以及它所属的数据库服务器。
  • 数据库用户:显示用户名、主机(针对 MySQL)、数据库类型和服务器名称。
  • 项目:显示项目名称、类型和根目录。

列表下方有一个选项:

  • 迁移期间停止服务以确保数据一致性(推荐) — 默认启用。 勾选后,在传输每个项目之前,会先停止对应的网站和该项目的 systemd 服务,从而防止文件和数据在复制过程中发生变化。

你必须至少选择一个项目,否则向导会要求你选择一些内容。 点击 开始迁移 并在对话框中确认即可开始。 使用 上一步 返回预检。

警告

迁移会在远程服务器上重新创建资源,并将文件上传到相同的路径下。 远程服务器上名称或路径相同的现有数据可能会被覆盖。 请确保目标服务器已准备就绪,并最好在开始前完成备份。

步骤 4:迁移中

迁移一旦开始,便会在源服务器上后台运行,同时页面会显示实时进度:

  • 状态表会列出每个选中的项目及其 类型名称状态(运行中 / 成功 / 失败 / 已跳过)和 耗时
  • 滚动的 迁移日志 面板会实时流式输出详细的日志行,包括每个文件的上传进度以及传输速度和预计剩余时间。

进度通过 WebSocket 连接推送;如果该连接断开会自动重连,如果无法建立连接,页面会回退到轮询方式。 你可以离开页面稍后再回来——向导会继续处理该迁移。 使用 下载日志 将完整日志保存为 migration.log

各项目类型的处理方式

迁移按以下顺序处理项目:先网站,然后数据库,再数据库用户,最后项目。

类型行为
网站在远程面板上重新创建网站(类型、监听端口、域名、路径、PHP 版本,以及代理站点的反向代理目标),然后打包并上传站点目录,并在远程服务器上解压。 安全(443/SSL)监听地址在创建时会被跳过,因为远程站点尚无证书。
数据库使用 mysqldump(MySQL)或 pg_dump(PostgreSQL)导出数据库,在远程端查找匹配的数据库服务器(按名称和类型),在那里创建数据库,上传转储文件,并在远程服务器上导入。
数据库用户查找本地用户的权限,找到匹配的远程数据库服务器,并在远程面板上重新创建该用户(用户名、密码、主机、权限)。
项目在远程面板上重新创建项目(名称、类型、描述、目录、启动命令、运行身份用户),上传项目根目录,并上传 systemd 服务文件(然后在远程端运行 systemctl daemon-reload)。

注意

文件以 10 MB 分块传输并进行完整性校验,且上传在中断后会从断点处续传,因此大型目录和数据库都能可靠传输。

步骤 5:完成

迁移完成后,向导会显示结果摘要:

  • 总体状态:如果每个项目都迁移成功则为 成功,如果部分项目出现问题则为 警告
  • 迁移的开始和结束时间。
  • 一个详细的结果表,包含每个项目的 类型名称状态耗时详情(失败项目的错误信息,或成功项目的完成时间)。
  • 如果预检发现了环境差异,会有一条提醒,指出你可能需要在远程服务器上调整设置,否则受影响的项目在迁移后可能无法正常工作。

在此你可以 下载日志 保留一份完整迁移日志的副本,或点击 开始新的迁移 重置向导并重新开始。

迁移后检查清单

迁移完成后,登录远程 AcePanel 服务器并验证结果:

  • 证书:TLS 证书不会被转移。 为迁移的网站重新签发或重新导入证书,然后重新启用 HTTPS 和所有安全(443)监听端口。
  • 运行环境和服务:对于预检标记为在远程服务器上缺失的任何运行环境,请安装它并调整相关的网站或项目配置。
  • 数据库连接:确认迁移的数据库和用户存在,如果应用的连接设置引用的是旧服务器,请更新它们(主机、凭据)。
  • 启动服务:如果你在迁移期间停止了网站或项目服务,请在确认一切就绪后于远程服务器上重新启动它们。

重置

迁移仍在运行时无法重置。 一旦它进入完成(或空闲)状态,使用 开始新的迁移 清除连接详情、所选内容、日志和结果,然后再开始另一次迁移。