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

为何AWS EC2的ApplicationStart钩子中需同时用PM2与Node/NPM启动项目?

为什么教程里同时用Node/NPM和PM2启动项目?能不能只用PM2?

完全可以只用PM2启动你的Node.js项目,那些同时执行两种启动命令的写法要么是教程作者的疏漏,要么是没搞懂PM2的核心作用——PM2本身就是用来替代直接node/npm start的进程管理工具,重复启动完全没必要,还会引发问题:

为什么重复启动是错误的?

  • 直接执行npm start或node app.js &的进程会脱离PM2管控:崩溃后不会自动重启,PM2的日志、监控功能也覆盖不到它,等于白用了PM2。
  • 要是npm start没加后台符&,在AWS ApplicationStart钩子中执行会阻塞整个钩子流程,导致部署后续步骤无法完成。
  • 两个独立进程同时运行,会占用双倍内存和CPU资源,纯属于浪费。

正确的AWS EC2钩子写法(只用PM2)

根据你的项目情况选一种即可:

  1. 通过npm脚本启动(如果package.json里定义了start脚本):
pm2 start npm --name "covidapp" -- start
  1. 直接启动入口文件:
pm2 start app.js --name "myApp"
  1. 关键步骤:确保EC2重启后PM2自动恢复进程
    执行启动命令后必须加这两句,否则EC2重启后项目会停止运行:
pm2 save
pm2 startup

pm2 save会保存当前PM2管理的进程列表,pm2 startup会配置系统服务,让PM2在EC2开机时自动启动并恢复之前的进程。

额外提醒

  • PM2自带日志管理,不用手动写> app.out.log 2> app.err.log,默认日志在~/.pm2/logs/目录下,也可以通过pm2 logs实时查看。
  • AWS ApplicationStart钩子只在部署(比如CodeDeploy部署)时执行一次,所以必须配置PM2自启,才能保证EC2重启后项目持续运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:37:00