为了能快速了解并处理您的问题,请提供以下基础信息:
环境:
- 宝塔 Linux 面板
- Node.js v24.18.0
- PM2 v7.0.3
- Next.js 16.2.10
- PM2 Cluster 实例数:3
复现步骤:
1. 在宝塔 Node 项目管理器中选择自定义 ecosystem.config.cjs。
2. 在“环境变量”中填写 NODE_ENV、HOSTNAME、PORT、Redis 等变量。
3. 保存并通过宝塔重启项目。
4. PM2 详情能够看到 env_production 对象,但执行 pm2 env 0 或检查实际 Node 进程环境时,这些变量并不存在。
实际结果:
1. 宝塔只执行:
pm2 start ecosystem.config.cjs
2. 没有携带:
--env production --update-env
3. env_production 只是保存在 PM2 配置元数据中,没有合并到当前进程环境。
4. HOSTNAME=127.0.0.1 未生效,应用仍监听 0.0.0.0。
5. Redis 环境变量未注入,导致 Next.js 共享缓存未启用。
6. 宝塔项目的 pm2_name 与 ecosystem 中 apps[].name 不一致时,项目实际运行但宝塔可能显示“未启动”。
期望结果:
1. 自定义 ecosystem 配置使用 env_production 时,宝塔应执行:
pm2 startOrReload ecosystem.config.cjs --env production --update-env
2. 或将面板环境变量合并到 ecosystem 的 env 字段,使其默认生效。
3. 宝塔应读取 ecosystem 中 apps[].name 并同步 pm2_name,用于正确判断项目运行状态。
4. 重启和开机自启脚本应使用相同配置,避免重启后丢失环境变量或退回单实例模式。
|
|