Node.js 服务安全部署流程

基础 Runbook

确认主机、用户和变更单
→ 记录当前 Commit、PM2 状态和健康检查
→ 确认备份及上一版本
→ 获取指定 Commit
→ 按 lockfile 安装依赖
→ TypeScript 构建和检查
→ 执行经过审核的迁移
→ reload/restart
→ 验证内部端口和公网入口
→ 检查日志、资源和业务指标
→ 记录结果

命令示例

git status --short
git rev-parse HEAD
npm ci
npm run build
pm2 reload ecosystem.config.js --update-env
curl -fsS http://127.0.0.1:8080/health
curl -fsS https://example.com/api/health

不要在工作区有未知修改时直接 git pull;不要使用 git reset --hard 清理不明变更。npm ci 会严格按 lockfile 安装,仍应在版本目录或构建阶段完成,避免边安装边影响运行中代码。

原子发布思路

将每个版本构建到独立目录:

/srv/nloop/releases/<version>
/srv/nloop/current -> releases/<version>

构建和验证完成后切换 current,失败时切回上一版本。持久文件、.env、日志和上传目录不应放在会随版本删除的目录内。

数据库迁移

迁移应与旧、新应用都具备兼容窗口。不可逆迁移需要单独审批、备份和恢复方案;构建失败时绝不能继续重启生产服务。