Skip to content

版本升级 ​

每个平台部署页末尾都有该平台的升级命令,本页讲清楚所有平台共同遵守的原则、升级前检查和回滚。

原则 ​

升级只替换可执行文件。 config.yaml 和整个 data/ 目录属于你方,一律保留。

绝不能覆盖的路径内容
config.yaml密钥、端口、告警与在线文档配置
data/apexpm.db全部业务数据(SQLite)
data/uploads/上传的附件
data/documents/在线文档(本地存储模式)
data/license.lic授权文件
data/license_state.json宽限期起点与已发送的告警记录

新版本首次启动时会自动升级数据库结构,不需要手工执行 SQL。这一步不可逆,所以升级前必须备份。

升级前检查 ​

  1. 读版本说明。 交付包里的 changelog/vX.Y.Z.md,尤其是「升级注意」一节——需要改配置、有不兼容变更时都写在这里。跨多个版本升级时,把中间每个版本的「升级注意」都看一遍。
  2. 确认平台一致。 新包的平台要和原来的一致(Linux 仍用 linux-amd64)。
  3. 安排停机窗口。 升级期间服务不可用,一般几分钟;数据量大时结构升级可能更久。安排在业务低峰期。
  4. 准备备份位置。 备份要放到另一块盘或另一台机器,见备份与恢复。
  5. 使用外部数据库时,同时用数据库自己的工具备份(pg_dump、mysqldump),只备份 data/ 不包含业务数据。

升级步骤 ​

各平台命令不同,步骤一致:

  1. 停止服务
  2. 备份 data/(外部数据库同时做数据库备份)
  3. 只替换可执行文件(Docker 还要替换 Dockerfile 并重建镜像)
  4. 启动服务,等待自动结构升级完成
  5. 验证
平台命令
Linux(systemd / start.sh)Linux → 升级
Linux(deploy.sh)在新交付包目录里执行 SERVER=... ./deploy.sh,自动备份
Linux(Docker)Docker → 升级
WindowsWindows → 升级
macOSmacOS → 升级

升级后验证 ​

bash
curl -fsS http://127.0.0.1:9000/health
curl -fsS http://127.0.0.1:9000/api/v1/license/status

/health 返回的 version 应为新版本号。然后登录系统,抽查几个常用页面,确认历史数据都在、附件能打开。

常见错误 ​

现象原因处理
启动后立即退出,日志 migrations failed数据库结构升级失败不要反复重启。保留完整日志联系我方;需要尽快恢复业务就按下文回滚
日志 automigrate failed同上同上
升级后页面还是旧版本,或 /health 的 version 仍是旧版本号浏览器缓存;Docker 没带 --build;替换到了别的目录浏览器 Ctrl+F5 强制刷新;Docker 重新 up -d --build
升级后部分功能提示需要新配置新版本新增了配置项对照新包里的 config.example.yaml 与版本说明,把新增项补进 config.yaml(不要整个覆盖)
启动后提示 IP 未授权 或授权失效升级时误覆盖了 data/license.lic,或换了服务器从备份恢复 data/license.lic;换过服务器则联系我方重新签发
升级后数据全部不见覆盖了 data/ 或 config.yaml(数据库配置丢失,回落到空的 SQLite)停服,从备份恢复 data/ 与 config.yaml

回滚 ​

只换回旧的可执行文件是不行的

新版本启动后数据库结构已经变了,旧程序面对不认识的结构,行为不可预期,可能损坏数据。交付的程序没有回退数据库结构的命令。

回滚 = 换回旧可执行文件 + 用升级前的备份覆盖 data/(外部数据库则用升级前的数据库备份恢复)。升级之后产生的数据会丢失。

以 Linux systemd 为例:

bash
cd /opt/apexpm
sudo systemctl stop apexpm
sudo mv data "data.failed-$(date +%Y%m%d-%H%M%S)"     # 留存现场,便于排查
sudo cp -a data.bak-20260101-020000 data               # 换成升级前的备份
sudo cp /path/to/old/apexpm apexpm && sudo chmod +x apexpm
sudo chown -R apexpm:apexpm data apexpm
sudo systemctl start apexpm

其他平台同理:停服 → 旧 data/ 改名留存 → 恢复备份 → 放回旧可执行文件 → 启动。

所以升级前一定要保留旧版本的交付包,直到确认新版本稳定运行。

跨版本升级 ​

可以从任意旧版本直接升到最新版本,不需要逐个版本升级:结构升级会按顺序依次执行所有中间版本的变更。但要注意:

  • 中间每个版本的「升级注意」都要看;
  • 跨度越大,结构升级耗时越长,停机窗口要留足。

更换服务器 ​

授权与服务器 IP 绑定,换机前先把新服务器的 IP 告知我方重新签发授权。

  1. 新服务器按对应平台文档完成部署,但先不要启动
  2. 停止旧服务器上的服务
  3. 把旧服务器的整个 data/ 目录和 config.yaml 拷到新服务器部署目录
  4. 用新签发的授权文件覆盖 data/license.lic
  5. 检查 config.yaml 里和旧机器相关的地址(server.public_base_url、onlyoffice.public_base、数据库 DSN),改成新地址
  6. 启动并验证

跨平台迁移(如 Windows → Linux)同样适用:data/ 与 config.yaml 在各平台之间通用,只是可执行文件要换成对应平台的。

研值云图·© 2026 研值云图 版权所有