From ab600e1c82b1fca3a9bcdac478c69128be50222f Mon Sep 17 00:00:00 2001 From: xcbyy <2578898740@qq.com> Date: Thu, 22 Oct 2026 11:32:29 +0800 Subject: [PATCH] =?UTF-8?q?docs(ops):=20=E8=A1=A5=E5=85=85=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=20NODE=5FENV/pm2=20=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E4=B8=8E=E5=B7=A1=E6=A3=80=20updated=5Fat=20=E5=8F=A3?= =?UTF-8?q?=E5=BE=84=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/运维备份与告警审计.md | 39 +++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/docs/运维备份与告警审计.md b/docs/运维备份与告警审计.md index dda8d8c..f8967a0 100644 --- a/docs/运维备份与告警审计.md +++ b/docs/运维备份与告警审计.md @@ -20,7 +20,7 @@ | 告警 | 判定 | 级别 | |---|---|---| -| 提现打款卡在「处理中」 | `withdrawals.status='处理中'` 且创建超过 30 分钟 | ERROR | +| 提现打款卡在「处理中」 | `withdrawals.status='处理中'` 且最后更新超过 30 分钟 | ERROR | | 支付成功但订单未流转 | `payment_intents.status='SUCCESS'` 且订单仍为待付款超过 10 分钟 | ERROR | | 待接单订单超时未退款 | `orders.status='待接单'` 超过 40 分钟 | WARN | @@ -54,3 +54,40 @@ SELECT * FROM system_alerts WHERE status='OPEN' ORDER BY created_at DESC; # 最近后台操作 SELECT * FROM admin_audit_logs ORDER BY created_at DESC LIMIT 50; ``` + +## 五、生产运行模式与 pm2 环境变量 + +生产进程必须保持以下环境变量(缺一会导致后台无法登录或用户 token 失效): + +| 变量 | 生产值 | 说明 | +|---|---|---| +| `NODE_ENV` | `production` | 日志/订阅默认状态;健康检查返回 `mode: production` | +| `PORT` | `3020` | 服务监听端口(Nginx 反代) | +| `MINIPROGRAM_STATE` | `formal` | 订阅消息跳转正式版小程序 | +| `ADMIN_PASSWORD` | 后台口令 | 缺失时后台登录 fail-closed | +| `ADMIN_TOKEN_SECRET` | 后台签名密钥 | 变更会使后台登录态失效 | +| `USER_TOKEN_SECRET` | 用户签名密钥 | 变更会使全部用户登录态失效 | +| `ALLOW_SANDBOX_PAY` | `false` | 生产禁止沙箱支付 | +| `ALLOW_INSECURE_DEV_AUTH` | `false` | 生产禁止信任客户端声明身份 | + +变更 `NODE_ENV` 或重新部署时的安全做法: + +```bash +# 1. 先备份当前进程环境(含密钥) +PID=$(pm2 pid peiww-server) +tr '\0' '\n' < /proc/$PID/environ > /root/peiww_env_$(date +%Y%m%d_%H%M%S).txt +chmod 600 /root/peiww_env_*.txt + +# 2. 把当前环境导入 shell(不要只 export NODE_ENV,否则 --update-env 可能丢密钥) +while IFS= read -r -d '' kv; do export "$kv"; done < /proc/$PID/environ +export NODE_ENV=production + +# 3. 平滑重载并固化 +pm2 reload peiww-server --update-env +pm2 save + +# 4. 验证 +curl -s http://127.0.0.1:3020/api/health # mode 必须为 production +``` + +注意:`pm2 restart` 会沿用已保存的进程环境;`pm2 reload --update-env` 才会用当前 shell 环境覆盖。重新创建进程(`pm2 delete` 后重新 `start`)时必须重新提供上述变量。