ecosystem.config.cjs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const path = require("path");
  2. /**
  3. * PM2 多环境说明:
  4. * - jchl-test / jchl-prod:默认 `PORT=4000`,与 `server.js`、Nginx 反代常见配置一致;改端口时请同步 Nginx upstream。
  5. *
  6. * 端口可在下面 env 中改,或由服务器上的 .env.production / 系统环境变量覆盖。
  7. * 敏感信息不要写进本文件,用 PM2 --env 或服务器环境变量注入。
  8. *
  9. * NEXT_PUBLIC_*(如 API 地址)在 next build 时已打入前端包;PM2 里再改不会更新浏览器里的接口域名。
  10. * 测试 / 生产请分别用 npm run build:test 与 npm run build。
  11. * build:test 读取 .env.development(含 API_PROXY_TARGET 等),再执行 next build。
  12. *
  13. * 若 API 使用 __ORIGIN__(与站点同源),服务端渲染发请求时还需在构建或运行环境提供
  14. * NEXT_PUBLIC_SITE_URL(例如 https://你的前端域名),否则服务端拿不到页面域名。
  15. *
  16. * 主业务 / 汇款端口由 Next rewrites 决定:`API_PROXY_TARGET` → 如 :8005,`API_PROXY_TARGET_REMITTANCE` → 如 :8504。
  17. * 这两项在 **next build** 时读入 next.config;打包流水线或本机构建前需注入,与公网域名解耦。
  18. */
  19. module.exports = {
  20. apps: [
  21. {
  22. name: "jchl-test",
  23. cwd: path.resolve(__dirname),
  24. script: "server.js",
  25. interpreter: "node",
  26. instances: 1,
  27. exec_mode: "fork",
  28. autorestart: true,
  29. watch: false,
  30. max_memory_restart: "800M",
  31. env: {
  32. NODE_ENV: "production",
  33. PORT: 4000,
  34. },
  35. },
  36. {
  37. name: "jchl-prod",
  38. cwd: path.resolve(__dirname),
  39. script: "server.js",
  40. interpreter: "node",
  41. instances: 1,
  42. exec_mode: "fork",
  43. autorestart: true,
  44. watch: false,
  45. max_memory_restart: "1G",
  46. env: {
  47. NODE_ENV: "production",
  48. PORT: 4000,
  49. },
  50. },
  51. ],
  52. };