我正在使用CodeDeploy将我的应用程序部署到由Auto Scaling Group创建的EC2实例。
应用程序部署正常并移动到正确的文件映射位置,但我的AfterInstallation
脚本永远不会执行。我可以在日志中看到它试图使脚本可执行并通过该阶段,但它永远不会被执行。
这是我的appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /opt/lobby
hooks:
AfterInstall:
- location: bootstrap.sh
timeout: 30
runas: root
这是脚本
#!/bin/bash
nohup nodejs lobby.js &
echo "finished"
我没有看到回显打印,也没有看到任何与lobby.js相关的进程。我可以通过在部署后键入./bootstrap.sh来验证此脚本是否有效,这样可以正常工作。这个钩子应该为我做这个。
这需要是一个后台任务,因为我将在此脚本中运行多个应用程序,但现在只显示一个以使其正常工作。
编辑:
我已经提到http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#appspec-hooks-server并试图用ValidateService和AfterAllowTraffic替换AfterInstall(但我没有使用LoadBalancer)
问题
为什么我的AfterInstallation脚本没有被调用,或者看起来好像?
答案 0 :(得分:0)
AfterInstall:AfterInstall脚本包含安装应用程序后需要执行的任务。
BeforeInstall脚本示例:
#!/bin/bash
cd /home/ubuntu/production/weone-backend
sudo chown -R ubuntu:ubuntu /home/ubuntu/production
sudo NODE_ENV=production nohup nodejs app.js > /dev/null 2> /dev/null < /dev/null &
在上面的脚本中,我们正在更改应用程序文件夹的所有权 &安培;开始申请程序。
注意:使用“/dev/null 2> /dev/null < /dev/null &
”自动退出nohup shell,否则CodeDeploy将停留在AfterInstall事件中。