运维与授权

在线升级

平台后台点一下完成框架与扩展升级:验签、预检、备份、迁移、健康检查、失败回滚全自动。本章讲升级引擎的行为边界与「什么时候需要重启」。

三档生效模型

不同操作对进程的要求不同,Tenraft 把它收敛为三档,后台会明确告诉你当前处于哪一档:

操作生效方式停机窗口
装 / 卸 / 启停扩展注册物(通道、菜单、功能键、驱动)跨进程即时生效;扩展类动态装载当场可用
扩展带后端路由路由需一次平滑加载才挂上——商店页出现「重启加载」横幅,攒一批点一次Linux 零(平滑 reload)
框架核心升级替换已加载进内存的类文件,必须换进程Linux 平滑 reload 零停机;Windows 受管重启数秒维护窗

核心升级流程

平台后台 → 框架升级:在线检查更新(云端 manifest 经 Ed25519 验签,仅提示有无新版)或直接上传 .tzcore 升级包。执行流程:

  1. 1

    验签

    Ed25519 总签名 + 逐文件 sha256 清单校验,签名不过直接拒绝。

  2. 2

    预检(preflight)

    磁盘余量、包完整性、PHP 版本与扩展、路径可写、已装扩展的框架版本兼容检查。

  3. 3

    备份与暂存

    将被覆盖的文件先备份再落新文件(staged 写入);数据库按需备份。

  4. 4

    迁移

    执行本版本迁移(幂等,且已通过 MySQL 5.7 / 8.0 双版本兼容检查)。

  5. 5

    换进程与健康检查

    平滑 reload / 受管重启后轮询健康探针;不通过自动回滚已备份文件。

  • 保护路径永不覆盖:.envpublic/uploadsruntime、已装应用与插件目录。
  • 升级全程写断点日志(WAL 式):进程中途被 kill,重启后用 system:resume 回滚或续跑,不会留下半套文件。
  • 扩展升级复用同一引擎:按版本增量迁移链逐版执行,升级前自动快照该扩展目录,同样支持 ext:resume 崩溃恢复。

重启的三种姿势

按环境选择

# Linux 生产(推荐):平滑 reload,零停机

$ php start.php reload

# Windows / 单机受管:supervisor 优雅重启

$ php supervisor.php # 常驻;收到重启信号后 3s 排空在途请求,

# 换新进程期间返回干净的 503 维护页

# 后台按钮:平台后台 → 进程管理 → reload / restart

升级期间的维护模式有租约与超时兜底:即使升级进程异常消失,维护状态也会在租约到期后自动解除,绝不会永久 503

升级常见问题

问题答案
升级会覆盖我改过的内核文件吗会(保护路径除外)。改内核不受支持——需求走扩展点或联系官方,否则每次升级都要重演冲突
升级失败会怎样自动回滚备份文件并标记失败,服务回到升级前状态;诊断信息在升级日志(runtime/logs/upgrade.log
升级中断电 / 被 kill重启后运行 php webman system:resume(核心)或 php webman ext:resume(扩展)恢复到一致状态
装了插件但接口 404带后端路由的插件需要一次「重启加载」——看商店页顶部横幅,点一下即可