运维与授权

运维与故障排查

健康探针、日志体系、备份恢复、队列治理与一套救急命令——把生产环境稳定跑起来需要知道的一切。

健康探针

GET /health(无鉴权)

{

"status": "ok", // ok / degraded

"installed": true,

"checks": {

"db": { "ok": true }, // SELECT 1

"redis": { "ok": true }, // ping

"disk": { "ok": true }, // 剩余空间粗粒度

"queue": { "ok": true } // 消费进程存活

}

}

把它接进你的监控(Uptime Kuma、Prometheus blackbox 等),degraded 即告警。探针对外只报粗粒度状态,详情落服务端日志——不泄露基础设施信息。

日志在哪里

文件(runtime/logs/)内容保留
tenraft.log应用主日志(按天滚动)按天
slow.log慢查询(> 500ms)按天
upgrade.log升级引擎全程90 天
operation.log管理端操作审计90 天
queue_failed.log队列失败任务90 天
crontab.log定时任务执行按天
stdout.log / workerman.log进程级输出

备份与恢复

  • 后台操作:平台后台 →「系统」→ 备份恢复。备份为纯 PHP 流式导出 .sql.gz(不依赖 mysqldump 二进制);恢复前自动先做一份安全备份。
  • 命令行php webman backup:run 备份;php webman backup:restore-run 恢复。
  • 恢复期间全站进入维护模式(fail-closed);恢复异常中断留下的维护状态用 php webman maintenance:recover 查询、接管或解除。
  • 完整备份 = 数据库 + .env + public/uploads + runtime(后三者是升级保护路径,文件级备份即可)。

队列与定时任务

  • 异步事件与长任务(备份、导出)走 Redis 队列,各自独立消费进程——导出大文件不会阻塞通知发送。
  • 失败任务管理:php webman queue:failed(列出 / 重放 / 丢弃)。
  • 定时任务由数据库驱动(每 10 秒扫描到期任务),平台后台可视化启停与手动触发;php webman crontab:tick 手动跑一轮。
  • 内置任务包括:授权心跳、租户到期处理、支付 / 退款 / 提现对账、域名复验、回收站清理、导出产物清理、AI 卡死任务回收、小程序审核状态同步等。

运维命令速查

命令用途
php webman migrate / migrate:status执行 / 查看数据库迁移
php webman db:lint扫描迁移 SQL 的 MySQL 双版本兼容红线
php webman backup:run / backup:restore-run数据库备份 / 恢复
php webman maintenance:recover处理异常残留的维护状态
php webman queue:failed失败队列管理
php webman storage:diag存储驱动全链路自检(上传 / 读取 / 删除)
php webman ext:resume / system:resume扩展 / 核心升级的崩溃恢复
php webman audit:prune清理过期审计日志
php webman hook:list列出全部扩展点与已注册监听器

演示模式

对外开放体验环境时打开 DEMO_MODE:业务写操作(建商品、装修、建表单)照常放行让访客真实体验,只拦三类危险操作——破坏演示环境(改密码、删数据)、触达外部系统(群发、提审、打款)、动文件系统与全库(装卸扩展、升级、备份恢复)。演示数据以你预先制作的一份数据库备份为基线(黄金快照),每日凌晨自动恢复到该基线;登录页自动预填演示账号。

常见故障速查

症状排查方向
全站 503「系统更新中」升级 / 恢复中的正常维护态。异常残留时用 maintenance:recover;维护租约有超时兜底,不会永久 503
MySQL 连接数打爆多核机未设 HTTP_COUNT(默认 CPU × 2 个 worker,每个都持连接)。设小 worker 数并核对 max_connections
生产环境接口全部维护中,本地正常生产 Redis 不可用时 HTTP fail-closed(APP_ENV=local 才 fail-open)。先救 Redis
扩展安装报「拒绝验签」生产未配置官方公钥文件或包签名无效。检查 EXTENSION_OFFICIAL_PUBKEY_FILE;本地开发用 APP_ENV=local
通知没发出去查发送日志(场景 / 通道 / 错误);短信需装通道插件并配凭证;周期额度用尽会报超限并附用量
升级 / 安装中断system:resume / ext:resume 恢复一致状态,再看 upgrade.log 定位