无论如何

时间:2018-06-20 07:22:11

标签: amazon-web-services amazon-s3 amazon-ec2 bitbucket aws-code-deploy

我正在尝试使用codedeploy从bitbucket自动部署到ec2实例,但是Codedeploy始终在“ ApplicationStop”阶段失败。

这是我的appspec.yml

version: 0.0 os: linux files: - source: /quickdeal.zip destination: /home/ubuntu/quickdeal/ hooks: BeforeInstall: - location: scripts/install_dependencies.sh runas: root ApplicationStop: - location: scripts/stop_server.sh runas: root ApplicationStart: - location: scripts/start_server.sh runas: root

接下来是stop_server.sh

#!/bin/bash
# stop any old running servers 
killall -s KILL node -q || echo 'no node process was running'

但这是我遇到的错误

Error CodeScriptFailed
Script Namescripts/stop_server.sh
MessageScript at specified location: scripts/stop_server.sh run as user root failed with exit code 1
Log TailLifecycleEvent - ApplicationStop
Script - scripts/stop_server.sh

我已经尝试过的东西

[1]删除并重新创建应用程序 [2]清空stop_server.sh,使其根本不给出任何退出代码(仍然有退出代码1)

1 个答案:

答案 0 :(得分:0)

首先,当我尝试使用您拥有的killall命令时,它失败并显示:

killall: unknown signal q; valid signals:
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP
TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2

对于您讨论的问题,我非常有信心scripts/stop_server.sh不是可执行文件。如果该脚本不可执行,则尝试手动运行它会得到类似sudo: scripts/stop_server.sh: command not found的信息。尝试在本地运行脚本,我敢打赌,您会看到的。

这是一个简单的解决方法。在您将在应用程序规范中运行的所有可执行文件上运行此命令-sudo chmod +x scripts/stop_server.sh,这将在创建新的应用程序捆绑包时解决您的问题。