簡體   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