Я столкнулся с проблемой при попытке установить AWS Codepipline. Мой сценарий ApplicationStart выполняет вызов, чтобы запустить сервер express, прослушивающий порт 60900, но поскольку express .listen () удерживает командную строку, в то время как он прослушивает время ожидания сценария ApplicationStart, и мое развертывание завершается неудачно.
Я попытался переместить его в фоновый процесс с помощью символа & в конце команды, запускающей сервер, но я все еще получаю сообщение об ошибке в ловушке ApplicationStart.
Когда я запускаю сценарий start_server. sh вручную, он почти мгновенно запускает сервер и возвращает мне контроль над командной строкой.
appspe c .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 команде запуска
app / start_app. sh
#!/bin/sh
if [ "$NODE_ENV" = "production" ]; then
node server.js &
else
nodemon --ignore './sessions' server.js;
fi
AWS Ошибка развертывания кода
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]
Любая помощь приветствуется. Я застрял на этом в течение дня или около того.