Deployment Go服务的部署策略?
我正在用Go编写一些新的web服务 无论目标平台如何,我都可以使用哪些部署策略?例如,我正在Mac上开发,但是登台/生产服务器将运行Linux 是否有一些现有的部署工具可用于支持Go?如果没有,我可以做些什么来简化流程Deployment Go服务的部署策略?,deployment,build,ssh,go,remote-server,Deployment,Build,Ssh,Go,Remote Server,我正在用Go编写一些新的web服务 无论目标平台如何,我都可以使用哪些部署策略?例如,我正在Mac上开发,但是登台/生产服务器将运行Linux 是否有一些现有的部署工具可用于支持Go?如果没有,我可以做些什么来简化流程 我使用LiteIDE进行开发。有没有办法将LiteIDE挂接到部署过程中?不幸的是,由于Go是一种如此年轻的语言,目前还不太存在,或者至少很难找到它们。我也会对开发这样的围棋工具感兴趣 我所发现的是,有些人一直在自己做这件事,或者说他们已经为自己做了这件事 很可能是你必须自己做的
我使用LiteIDE进行开发。有没有办法将LiteIDE挂接到部署过程中?不幸的是,由于Go是一种如此年轻的语言,目前还不太存在,或者至少很难找到它们。我也会对开发这样的围棋工具感兴趣 我所发现的是,有些人一直在自己做这件事,或者说他们已经为自己做了这件事 很可能是你必须自己做的事情。而且你不必把自己限制在shell脚本中——在Go中完成它!事实上,许多围棋工具都是用围棋编写的。您应该避免在目标系统上编译,因为在生产系统上使用构建工具通常是一种不好的做法。Go使交叉编译二进制文件变得非常容易。例如,这就是为ARM和Linux编译的方式:
GOARCH=arm GOOS=linux go build myapp
您可以做的一件事是跳上或加入,并询问其他地鼠正在做什么。Capistrano听起来是一个单独部署的好主意。您还可以按照Luke的建议进行交叉编译。两种方法都很好
但更一般地说。。。我也在OSX(开发)和Linux(部署)之间左右为难,事实上,我最终只是通过VirtualBox和Vagrant在虚拟机上开发。我正在使用TextMate 2进行文本编辑,但在Mac上安装许多开发工具只是一个主要的PITA,我更喜欢在后台运行Debian之类的东西。好处是——这个虚拟环境可以镜像部署环境,这样我就可以在部署代码时避免意外,不管是哪种语言。我自己还没有尝试过,但看起来你可以使用golang(或者Dave Cheney的),尽管有一些警告 但是,如果您需要将环境与生产相匹配(大多数情况下您可能应该这样做),那么按照Marcin的建议去做是最安全的 您可以在上找到一些预构建的VirtualBox图像,尽管自己创建一个非常简单 我可以做些什么来简化流程 Go 1.5(2015年第3季度)的交叉编译理念应该更具吸引力,详情见“”: 之前: 对于成功的交叉编译,您需要
- 目标平台的编译器,如果它们不同于您的主机平台,即您在darwin/amd64(6g)上,并且您希望为linux/arm(5g)编译
- 目标平台的标准库,其中包括在构建Go发行版时生成的一些文件
考虑到Go的编译器在Go中,从Mac生成Linux可执行文件的过程应该变得简单。我现在可能有点晚了,但最近我写了一篇博客文章,介绍了我如何使用Capistrano在本地机器上交叉编译部署Go
如果您仍然感兴趣,请尝试一下:链接已断开。502坏网关
package main
import "fmt"
import "runtime"
func main() {
fmt.Printf("Hello %s/%s\n", runtime.GOOS, runtime.GOARCH)
}
% env GOOS=darwin GOARCH=386 go build hello.go
# scp to darwin host
$ ./hello
Hello darwin/386
% env GOOS=linux GOARCH=arm GOARM=7 go build hello.go
# scp to linux host
$ ./hello
Hello linux/arm