使用CodeDeploy的golang应用程序的EC2部署

问题描述

我正在尝试使用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相关文件

appspec.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

scripts / 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

scripts / build.sh

go build -o /app/webserver /app/main.go

scripts / start.sh

/app/webserver &

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

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

解决方法

我认为这与 stdout,stderr,and stdin有关:

在&

之前的字符串下方添加
/dev/null 2> /dev/null < /dev/null

The source

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...