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

通过Bitbucket Pipeline部署至AWS时,如何异步启动Node服务器?

解决Node服务器阻塞导致部署超时的方案

方案1:用nohup后台启动(快速解决)

修改启动脚本的最后一行,将npm start替换为:

nohup npm start > /var/log/node-app.log 2>&1 &
  • nohup:让进程脱离当前终端,即使脚本执行完毕退出,Node进程也能继续运行
  • > /var/log/node-app.log:将服务器的标准输出重定向到指定日志文件,方便后续排查问题
  • 2>&1:将错误输出也同步到上述日志文件中
  • &:将进程放到后台运行,让脚本立即继续执行并退出

方案2:使用进程管理器(生产环境推荐)

如果是生产环境,更推荐用pm2这类进程管理工具,它能自动重启崩溃的进程,还方便监控:

  1. 先在EC2实例上安装pm2(可整合到部署脚本中):
npm install -g pm2
  1. 修改启动脚本的最后一行:
pm2 start npm -- start

若有PM2配置文件(如ecosystem.config.js),可直接用:

pm2 start ecosystem.config.js

pm2启动进程后会立即退出脚本,不会阻塞CodeDeploy钩子,同时还能提供进程监控、日志管理等功能。

额外注意事项

  • 确保日志目录/var/log存在,或替换为你有权限写入的目录
  • 若用root用户运行,需注意pm2全局安装路径的权限问题
  • 可在启动命令后追加disown,确保进程完全脱离脚本的控制终端:
nohup npm start > /var/log/node-app.log 2>&1 & disown

内容的提问来源于stack exchange,提问作者Yossi G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:22:04