docs(ops): 补充生产 NODE_ENV/pm2 环境变量与巡检 updated_at 口径说明

这个提交包含在:
xcbyy
2026-10-22 11:32:29 +08:00
父节点 ef61a7638a
当前提交 ab600e1c82

查看文件

@@ -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`)时必须重新提供上述变量。