--- title: 生产环境拓扑与一键升级 type: fact permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/生产环境拓扑与一键升级 stable_id: d5bb7f58-99bb-4381-ac98-300cceb128fe scope: project project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a memory_type: fact status: active revision: 1 restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2 created_at: '2026-09-23T15:08:04.812872+00:00' updated_at: '2026-09-23T15:08:04.812925+00:00' tags: - production - server - pm2 - baota - upgrade --- 生产服务器 `8.134.255.136`(阿里云 Alinux 8,宝塔面板):Node 24,pnpm 由 corepack 提供,MySQL 本机 5.7(业务账号无 PROCESS 权限),Redis 本机。 - 部署目录 `/www/wwwroot/artveris`,PM2 应用名 **`server`**(非 artveris),API 端口 3000,域名 `https://art.qclh.xyz`(宝塔 Nginx 反代),升级工作目录 `/www/upgrade`(包/备份各保留最近 3 份)。 - SSH 免密:本机 `C:\Users\Administrator\.ssh\id_ed25519`,公钥已在 root authorized_keys。凭据条目见密码库“artveris · 生产服务器 SSH (8.134.255.136)”。 - PM2 开机自启已配置(2026-09-03):`pm2-root.service` enabled,重启链路 systemd → pm2 resurrect → `server`。 一键升级:本机运行 `.\scripts\upgrade-remote.ps1`(`-SkipBuild` 部署 `.release` 现有包)。流程:`build.py --upgrade` → scp 包+`upgrade-remote-steps.sh` → 远端备份(mysqldump `--single-transaction --no-tablespaces` 到 `/www/upgrade/backup/`,代码 tar 排除 node_modules/storage/backups)→ `pm2 stop server` → 官方 `upgrade.sh`(替代码/装依赖/prisma generate/migrate deploy)→ `pm2 restart` + `pm2 save` → 回环健康检查(install/status、/admin、/trace 均 200,10×3s)→ 清理旧包。任一步失败立即中止并保留备份,服务保持停止避免带病运行。打包前需先停本地 dev API。 - 已完成多次生产升级(含模块化编排迁移 `trace_module_layout`),`.env`/`storage/`/`backups/`/数据库未触碰。 - 生产上线检查单(天河链):换生产 AppID/AppKey → 切生产环境 → 生产重新注册钱包并离线保存凭据 → 抽一件真实走通 → 与天河商务核对计费。