繁体   English   中英

部署 node.js/express 服务器时 ApplicationStart 上的 AWS Codedeploy 超时

[英]AWS Codedeploy timesout on ApplicationStart when deploying a node.js / express server

我在尝试设置 AWS Codepipline 时遇到了问题。 我的 ApplicationStart 脚本调用以启动侦听端口 60900 的快速服务器,但是因为 express.listen() 在侦听 ApplicationStart 脚本时保持命令行状态并且我的部署失败。

我尝试在启动服务器的命令末尾使用 & 将它移动到后台进程,但我仍然在 ApplicationStart 挂钩处收到错误。

当我手动运行 start_server.sh 脚本时,它几乎立即启动服务器并让我重新控制命令行。

appspec.yml

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/mbmbam.app/
hooks:
  BeforeInstall:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root
    - location: scripts/remove_previous.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/change_permissions.sh
      timeout: 300
      runas: root
    - location: scripts/install_app.sh
      timeout: 300
      runas: root
    - location: scripts/install_db.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
      timeout: 300
      runas: ubuntu

脚本/start_server.sh

#!/usr/bin/env bash

NODE_ENV=production npm start --prefix /var/www/mbmbam.app/app

分配给 npm start 命令的脚本

应用程序/start_app.sh

#!/bin/sh

if [ "$NODE_ENV" = "production" ]; then
  node server.js & 
else
  nodemon --ignore './sessions' server.js;
fi

AWS Codedeploy 错误

LifecycleEvent - ApplicationStart
Script - scripts/start_server.sh
[stdout]
[stdout]> mbmbam-search-app@1.0.0 start /var/www/mbmbam.app/app
[stdout]> ./start_app.sh
[stdout]

任何帮助,将不胜感激。 我已经坚持了一天左右。

我通过将 start_app.sh 更改为

#!/bin/sh

if [ "$NODE_ENV" = "production" ]; then
  node server.js > app.out.log 2> app.err.log < /dev/null & 
else
  nodemon --ignore './sessions' server.js;
fi

看起来 AWS 甚至在此处的故障排除步骤中列出了它: https : //docs.aws.amazon.com/codedeploy/latest/userguide/troubleshooting-deployments.html#troubleshooting-long-running-processes

问题似乎是节点在背景中没有干净利落。

您可以尝试以下方式在“app/start_app.sh”中启动节点服务器:

$ nohup node server.js > /dev/null 2>&1 &

此外,我建议考虑让您的节点处理服务,以便在服务器重新启动时启动它:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM