【问题标题】:Deployment failed-Script at specified location: start.sh run as user ec2-user failed with exit code 127部署失败-指定位置的脚本:以用户 ec2-user 身份运行的 start.sh 失败,退出代码为 127
【发布时间】:2019-11-20 16:17:04
【问题描述】:

我正在尝试将代码从 GitHub 部署到 AWS Amazon 中的 CodeDeploy。 我有示例 HelloWorld 应用程序。我有如下所示的 appspec.yml:

os: linux

files:
  - source: /
    destination: /home/ec2-user/server

permissions:
  - object: /
    pattern: "**"
    owner: ec2-user
    group: ec2-user

hooks:
  ApplicationStop:
    - location: stop.sh
      timeout: 20
      runas: ec2-user
  ApplicationStart:
    - location: start.sh
      timeout: 20
      runas: ec2-user
  ValidateService:
    - location: validate.sh
      timeout: 120
      runas: ec2-user

和buldspec.yml:


phases:
  install:
    runtime-versions:
      java: openjdk8
  build:
    commands:
      - mvn clean package --quiet
artifacts:
  discard-paths: yes
  files:
    - target/*
    - scripts/*
    - appspec.yml

start.sh



cd /home/ec2-user/server
sudo /usr/bin/java -jar -Dserver.port=80 \
    *.jar > /dev/null 2> /dev/null < /dev/null &

stop.sh:


#!/usr/bin/env bash

sudo killall java
exit 0

和 validate.sh:

#!/bin/bash

echo "Waiting for 15 seconds before checking health.."
sleep 15

status_code=$(curl --write-out %{http_code} --silent --output /dev/null http://localhost:80)
if [[ "$status_code" -ne 200 ]] ; then
  echo "App is not healthy - $status_code"
  exit 1
else
  echo "App is responding with $status_code"
  exit 0
fi

我的部署失败,错误提示:

指定位置的脚本:以用户 ec2-user 身份运行的 start.sh 失败,退出代码为 127 日志 LifecycleEvent - ApplicationStart 脚本 - start.sh [stderr]/usr/bin/env: bash : 没有这样的文件或目录

谁能帮帮我

【问题讨论】:

  • 我在 start.sh 的开头没有看到像 #!/bin/bash#!/usr/bin/env bash 这样的 hashbang。还是复制粘贴错误?

标签: linux bash amazon-ec2 aws-code-deploy


【解决方案1】:

您似乎在 appspec.yml 中提到了 start.sh 的错误路径。它正在尝试在根路径中查找脚本。由于您的脚本位于“脚本”文件夹中,因此您必须像下面这样提及它。

os: linux

files:
  - source: /
    destination: /home/ec2-user/server

permissions:
  - object: /
    pattern: "**"
    owner: ec2-user
    group: ec2-user

hooks:
  ApplicationStop:
    - location: scripts/stop.sh
      timeout: 20
      runas: ec2-user
  ApplicationStart:
    - location: scripts/start.sh
      timeout: 20
      runas: ec2-user
  ValidateService:
    - location: scripts/validate.sh
      timeout: 120
      runas: ec2-user

【讨论】:

    猜你喜欢
    • 2019-05-17
    • 2018-04-17
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2020-06-05
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多