尝试设置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]
任何帮助将不胜感激。我已经坚持了一天左右。
问题似乎是节点在后台运行不正常。
您是否可以尝试以下方式在'app / start_app.sh'中启动节点服务器:
$ nohup node server.js > /dev/null 2>&1 &
此外,我建议您考虑使您的节点处理服务,以便在重新引导服务器时启动该服务: