我在Go上寫了一些新的Web服務。Go服務的部署策略?
無論目標平臺如何,我可以使用哪些部署策略?例如,我正在Mac上開發,但分段/生產服務器將運行Linux。
是否有一些現有的部署工具可以使用該支持Go?如果沒有,我可以做些什麼來簡化流程?
我使用LiteIDE進行開發。有沒有辦法將LiteIDE掛接到部署過程中?
我在Go上寫了一些新的Web服務。Go服務的部署策略?
無論目標平臺如何,我可以使用哪些部署策略?例如,我正在Mac上開發,但分段/生產服務器將運行Linux。
是否有一些現有的部署工具可以使用該支持Go?如果沒有,我可以做些什麼來簡化流程?
我使用LiteIDE進行開發。有沒有辦法將LiteIDE掛接到部署過程中?
不幸的是,由於Go是一種如此年輕的語言,目前還不存在,或者至少他們很難找到。我也會對Go的這些工具的開發感興趣。
我發現的是,有些人自己做,或者他們已經做了adapted other tools, such as Capistrano,爲他們做。
很可能這是你必須自己做的事情。而且您不必限制自己的shell腳本 - 在Go中執行!事實上,Go的許多工具都是,用Go編寫。您應該避免在目標系統上進行編譯,因爲在生產系統上安裝生成工具通常是一種不好的做法。 Go使交叉編譯二進制文件變得非常簡單。例如,你這是怎麼編譯ARM Linux的&:
GOARCH=arm GOOS=linux go build myapp
有一件事你可以做的是跳上#go-nuts freenode IRC channel或加入Go mailing list,並要求其他鼠他們在做什麼。
卡皮斯特拉諾聽起來像是獨自部署的好主意。你也可以像盧克建議的那樣進行交叉編譯。兩者都可以正常工作。
更一般地說雖然......我也在OS X(開發)和Linux(部署)之間徘徊,事實上我最終只是通過VirtualBox和Vagrant在虛擬機中開發。我使用TextMate 2進行文本編輯,但是在Mac上安裝許多開發工具只是一個主要的PITA,而且我更願意讓Debian或類似的東西在後臺運行。獎金是 - 這個虛擬環境可以反映部署環境,所以當我部署我的代碼時,無論語言如何,我都可以避免出現意外。
我還沒有嘗試過它自己,但它似乎可以cross compile golang(goxc或戴夫切尼的golang-crosscompile),雖然有一些注意事項。
但是,如果您需要將環境與生產相匹配,那麼您大多數時候應該這樣做,最安全的做法是像Marcin所建議的那樣。
您可以在http://virtualboxes.org/images/上找到一些預建的VirtualBox圖像,雖然自己創建一個很容易。
我可以做些什麼來簡化流程?
交叉編譯的想法應該更加吸引人,Go 1。5(Q3 2015年),爲Dave Cheney細節 「Cross compilation just got a whole lot better in Go 1.5」:
前:
對於成功的交叉編譯你需要
- 編譯器爲目標平臺,如果他們從不同的主機平臺,即你在達爾文/ amd64(6克),你想編譯的Linux/ARM(5克)。
- 目標平臺的標準庫,其中包含在Go分發版構建時生成的一些文件。
後(進入1.5+):
隨着翻譯的Go compiler into Go未來的1.5版本,現在第一個問題解決了開花結果的計劃。
package main
import "fmt"
import "runtime"
func main() {
fmt.Printf("Hello %s/%s\n", runtime.GOOS, runtime.GOARCH)
}
建立達爾文/ 386
% env GOOS=darwin GOARCH=386 go build hello.go
# scp to darwin host
$ ./hello
Hello darwin/386
或構建的Linux/ARM
% env GOOS=linux GOARCH=arm GOARM=7 go build hello.go
# scp to linux host
$ ./hello
Hello linux/arm
我在Mac上開發,但分段/生產服務器將運行Linux。
考慮到Go的編譯器在Go中,從Mac生成Linux可執行文件的過程應該很簡單。
我現在可能有點晚,但我最近寫了一篇關於如何使用Capistrano部署Go的博客文章,在我的本地機器上進行交叉編譯。
給它一個去如果您仍有興趣:http://thread0.me/2016/03/deploy-go-with-capistrano/
鏈接斷開。 502錯誤的網關 – crantok