// PM2 进程配置 — 恭学教育 // 用法: pm2 startOrReload ecosystem.config.cjs --update-env // 前提: 在项目根目录执行;也可通过 DEPLOY_DIR 指定项目目录 // 生产环境配置写在项目根目录 .env,由 Nest ConfigModule 读取 // 前端构建产物 apps/admin/dist 交给 Nginx 托管,不再用 PM2 启动前端 const path = require('path'); const DEPLOY_DIR = process.env.DEPLOY_DIR || __dirname; const LOG_DIR = path.join(DEPLOY_DIR, 'logs'); module.exports = { apps: [ { name: 'gongxue-backend', cwd: DEPLOY_DIR, script: 'apps/server/dist/main.js', instances: 1, exec_mode: 'fork', env: { NODE_ENV: 'production', }, // 内存限制 max_memory_restart: '512M', max_restarts: 10, restart_delay: 5000, // 优雅停机:给 Nest 时间排空请求/连接 kill_timeout: 5000, listen_timeout: 8000, // 日志(绝对路径,与启动目录无关) error_file: path.join(LOG_DIR, 'backend-error.log'), out_file: path.join(LOG_DIR, 'backend-out.log'), log_date_format: 'YYYY-MM-DD HH:mm:ss', autorestart: true, watch: false, }, ], };