PM2 与 Node.js 服务
高频命令
pm2 list
pm2 describe nloop
pm2 logs nloop --lines 100
pm2 start ecosystem.config.js
pm2 reload nloop
pm2 restart nloop
pm2 stop nloop
pm2 delete nloop
pm2 save
stop保留 PM2 进程定义但停止应用。delete从 PM2 进程列表移除,不只是停止。restart停止后启动,存在中断窗口。reload主要用于 Cluster 模式的逐实例替换,仍需应用支持优雅退出和健康检查。
NVM 与多 Node.js 版本
确认实际运行路径:
which node
node --version
which pm2
pm2 report
PM2 Daemon 继承启动它时的环境。切换 NVM 版本后,旧 Daemon 和 Startup 配置不一定自动切换。不要用 root 和普通用户分别启动两套 PM2;systemd Startup 应指向明确用户和 Node.js 路径。
安全部署检查
npm ci
npm run build
test -f dist/server.js
pm2 reload ecosystem.config.js --update-env
只有构建成功且产物验证后才 reload。确认 pm2 describe 中脚本路径、cwd、Node 解释器和环境正确,再分别 curl 内部端口和 Nginx 公网入口。
日志
PM2 日志不会自动无限安全地管理,应配置 pm2-logrotate 或系统日志策略,并监控磁盘。不要把密码、JWT 或完整请求体写入日志。