我正在使用Go编写一些新的Web服务。
无论目标平台是什么,有哪些部署策略可以使用?例如,我在Mac上开发,但是暂存/生产服务器将运行Linux。
是否有一些现有的部署工具支持Go?如果没有,有哪些事情我可以做来简化这个过程?
我使用LiteIDE进行开发。有没有办法将LiteIDE连接到部署过程中?
我正在使用Go编写一些新的Web服务。
无论目标平台是什么,有哪些部署策略可以使用?例如,我在Mac上开发,但是暂存/生产服务器将运行Linux。
是否有一些现有的部署工具支持Go?如果没有,有哪些事情我可以做来简化这个过程?
我使用LiteIDE进行开发。有没有办法将LiteIDE连接到部署过程中?
GOARCH=arm GOOS=linux go build myapp
你可以做的一件事是加入#go-nuts freenode IRC频道或者加入Go邮件列表,向其他Gophers询问他们正在做什么。
我自己还没有尝试过,但似乎你可以使用交叉编译golang(可以使用goxc或者Dave Cheney的golang-crosscompile),尽管有一些注意事项。
但是如果你需要与生产环境匹配,这可能大部分时间都是必要的,按照Marcin的建议是最安全的选择。
你可以在http://virtualboxes.org/images/找到一些预构建的VirtualBox镜像,不过自己创建一个也很容易。
之前:
要成功地进行跨平台编译,您需要:
- 目标平台的编译器(如果它们与您的主机平台不同),例如您在 darwin/amd64(6g)上,而您想要为 linux/arm(5g)编译。
- 目标平台的标准库,其中包括在构建Go发行版时生成的一些文件。
之后(Go 1.5+):
随着计划将Go编译器翻译成Go在1.5版本中实现,第一个问题现在已经解决。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