You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PM2运行Express-Generator生成的应用及配置调整

用PM2运行Express Generator应用的正确姿势

我来帮你捋清楚具体的操作方法,顺便解决你遇到的进程没出现在pm2 monit里的问题:

一、最简单的直接启动方式(开发环境快速验证)

直接在项目根目录执行这条命令,就能让应用正常启动并出现在pm2监控列表里:

DEBUG=myapp:* pm2 start ./bin/www --name "myapp"
  • DEBUG=myapp:*:把原来启动命令里的环境变量带上,确保Express的调试日志能正常输出
  • --name "myapp":给你的进程起个好记的名字,后续重启、查看日志等管理操作更方便

执行完后,再跑pm2 monit就能看到这个进程了,用pm2 list也能快速查看进程状态。

二、推荐用PM2配置文件管理(生产环境首选)

如果是生产环境,或者需要固定配置项,最好写一个PM2配置文件,后续维护会省心很多。

在项目根目录创建ecosystem.config.js文件,内容如下:

module.exports = {
  apps: [
    {
      name: "myapp", // 自定义进程名称
      script: "./bin/www", // 要启动的脚本路径,和原npm start指向的文件一致
      env: {
        NODE_ENV: "development",
        DEBUG: "myapp:*" // 开发环境的DEBUG变量配置
      },
      env_production: {
        NODE_ENV: "production",
        DEBUG: "myapp:*" // 生产环境如果需要调试日志就保留,不需要可直接删除
      }
    }
  ]
}

启动时根据环境选择命令:

  • 开发环境:pm2 start ecosystem.config.js
  • 生产环境:pm2 start ecosystem.config.js --env production

所有配置都存在文件里,不用每次敲一大串命令,后续重启、重载也只需要针对这个配置文件操作即可。

三、你之前的问题出在哪?

你把package.json里的start脚本改成pm2 start ./bin/www后,运行npm start时,pm2是作为npm的子进程启动的。pm2的监控工具默认只会追踪直接通过pm2命令启动的进程,这种嵌套启动的进程不会被正常识别,所以你在pm2 monit里看不到它。

如果非要通过npm脚本启动(比如CI/CD流程要求),可以修改成这样,但还是不推荐这种嵌套方式:

"scripts": {
  "start": "DEBUG=myapp:* pm2 start ./bin/www --name myapp",
  "stop": "pm2 stop myapp",
  "restart": "pm2 restart myapp",
  "test": "mocha --timeout 10000"
}

四、常用PM2命令小总结

  • 查看所有进程:pm2 list
  • 实时监控进程状态:pm2 monit
  • 查看应用日志:pm2 logs myapp(指定进程名)或者pm2 logs查看所有日志
  • 重启进程:pm2 restart myapp
  • 停止进程:pm2 stop myapp
  • 删除进程:pm2 delete myapp

内容的提问来源于stack exchange,提问作者MikZuit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:53:47