使用 CodeDeploy EC2 部署 golang 应用程序

use*_*672 1 go amazon-web-services aws-code-deploy

我正在尝试使用 CodeDeploy 将一个简单的 golang Web 服务器部署到 EC2。部署失败并出现以下错误{\"error_code\":6,\"script_name\":\"scripts/start.sh\",\"message\":\"Script at specified location: scripts/start.sh failed to close STDOUT\"。CodeDeploy相关文件:

应用程序规范.yml

version: 0.0

os: linux

files:
  - source: /main.go
    destination: /app/
  - source: /index.html
    destination: /app/
  - source: /config.json
    destination: /app/
  - source: /webserver.log
    destination: /app/

hooks:
  BeforeInstall:
    - location: scripts/cleanup.sh
      timeout: 180
      runas: root
  AfterInstall:
    - location: scripts/build.sh
      timeout: 180
      runas: root
  ApplicationStart:
    - location: scripts/start.sh
      timeout: 180
      runas: root
Run Code Online (Sandbox Code Playgroud)

脚本/cleanup.sh

sudo rm /app -rf
sudo mkdir /app
sudo chown -R ec2-user:ec2-user /app

sudo yum update -y
sudo yum install -y golang
Run Code Online (Sandbox Code Playgroud)

脚本/build.sh

go build -o /app/webserver /app/main.go
Run Code Online (Sandbox Code Playgroud)

脚本/start.sh

/app/webserver &
Run Code Online (Sandbox Code Playgroud)

我想这与我启动服务器的方式有关,但我不擅长 Linux 的复杂性,因此更详细的解释将不胜感激。

完整的网络服务器源代码可以在github中找到。

Зел*_*ный 5

我认为这与 stdout, stderr, and stdin

在 & 之前添加以下字符串

/dev/null 2> /dev/null < /dev/null
Run Code Online (Sandbox Code Playgroud)

来源