Amazon web services 为什么赢了';部署后,我的AWS CodeDeploy是否运行我的脚本?
我使用CodeDeploy将我的应用程序部署到由自动伸缩组创建的EC2实例 应用程序部署良好,并被移动到正确的文件映射位置,但我的Amazon web services 为什么赢了';部署后,我的AWS CodeDeploy是否运行我的脚本?,amazon-web-services,amazon-ec2,aws-code-deploy,Amazon Web Services,Amazon Ec2,Aws Code Deploy,我使用CodeDeploy将我的应用程序部署到由自动伸缩组创建的EC2实例 应用程序部署良好,并被移动到正确的文件映射位置,但我的安装后脚本从未执行。我可以在日志中看到,它试图使脚本可执行并通过该阶段,但它从未执行 这是我的appspec.yml version: 0.0 os: linux files: - source: / destination: /opt/lobby hooks: AfterInstall: - location: bootstrap.sh
安装后
脚本从未执行。我可以在日志中看到,它试图使脚本可执行并通过该阶段,但它从未执行
这是我的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"
我没有看到打印的echo,也没有看到任何与lobby.js相关的进程正在运行。我可以通过在部署后键入./bootstrap.sh来验证该脚本是否有效,并且该脚本工作正常。这个钩子应该可以帮我
这需要是一个后台任务,因为我将在这个脚本中运行多个应用程序,但现在只显示一个,以使其正常工作
编辑: 我已经参考并尝试用ValidateService和AfterAllowTraffic替换AfterInstall(但我没有使用负载平衡器) 问题
为什么我的后安装脚本没有被调用,或者看起来是这样?后安装:后安装脚本包含安装应用程序后需要执行的任务 安装前脚本示例:
#!/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 &
#/bin/bash
cd/home/ubuntu/production/weone后端
sudochown-rbuntu:ubuntu/home/ubuntu/production
sudo NODE_ENV=production nohup nodejs app.js>/dev/null 2>/dev/null
在上面的脚本中,我们正在更改应用程序文件夹的所有权
&启动应用程序进程
注意:使用“/dev/null 2>/dev/null
”自动退出nohup shell,否则您的CodeDeploy将在后安装事件中卡住
您确定该文件与appspec.yml位于同一文件夹中吗?如果是这样,请尝试位置:./bootstrap.shYeah,我经过一番挖掘后发现了问题。执行日志中抛出了一些错误,然后我不得不将后台进程的输出重定向到/dev/null,否则部署将失败。