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

问题描述 投票:0回答:1

尝试设置AWS Codepipline时遇到问题。我的ApplicationStart脚本发出了一个调用,以启动在端口60900上侦听的Express服务器,但是因为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

scripts / start_server.sh

#!/usr/bin/env bash

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

分配给npm start命令的脚本

app / 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]> [email protected] start /var/www/mbmbam.app/app
[stdout]> ./start_app.sh
[stdout]

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

node.js bash amazon-web-services aws-code-deploy aws-codepipeline
1个回答
0
投票

问题似乎是节点在后台运行不正常。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.