ecosystem.config.cjs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const path = require("path");
  2. /**
  3. * PM2 多环境说明:
  4. * - jchl-test:测试环境(默认端口 3100)
  5. * - jchl-prod:生产环境(默认端口 3000)
  6. *
  7. * 端口可在下面 env 中改,或由服务器上的 .env.production / 系统环境变量覆盖。
  8. * 敏感信息不要写进本文件,用 PM2 --env 或服务器环境变量注入。
  9. *
  10. * NEXT_PUBLIC_*(如 API 地址)在 next build 时已打入前端包;PM2 里再改不会更新浏览器里的接口域名。
  11. * 测试 / 生产请分别用 npm run build:test 与 npm run 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. };