amazon-web-services - 使用 CodeDeploy 部署 golang 应用程序的 EC2
问题描述
我正在尝试使用 CodeDeploy 将一个简单的 golang 网络服务器部署到 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
脚本/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
脚本/build.sh
go build -o /app/webserver /app/main.go
脚本/start.sh
/app/webserver &
我想这与我如何启动服务器有关,但我对 Linux 的复杂性并不擅长,所以更详细的解释将不胜感激。
完整的网络服务器源代码可以在github中找到。
解决方案
推荐阅读
- javascript - 正则表达式在Javascript中获取具有复杂结构的字符串
- android - 多次接收警报意图
- sql - 从表中查找同一键是否有更接近的日期值
- spring - 即使指示这样做,Spring Flux 也不会重试
- java - 错误的保存/分配/设置变量
- android - 根据文本宽度垂直或水平设置文本项
- c# - asp.net c# 会话变量
- testing - 在使用js的truffle测试中,如何设置`contract`后面的参数?
- mysql - 在 Django 中将数据插入 MySQL 之前的安全措施
- angular - Angular5 - 如何检查模块是否已加载