Go Revel - Deployment(部署)
##概覽
下面列出了部署的一些方法:
1、本地構建程序并拷貝至服務器
2、在服務器上獲取更新代碼,然后構建并運行
3、使用`Heroku`來管理部署
使用交互式的命令行會話來進行部署 - 通常需要一種工具來守護web服務器程序.
如以下工具:
Ubuntu Upstart http://upstart.ubuntu.com/
systemd http://www.freedesktop.org/wiki/Software/systemd/
##本地構建
revel應用可以部署在沒有安裝Go環境的機器上,revel工具使用`package`命令來編譯應用并將它打包為zip文件。
# 運行并測試應用.
$ revel run import/path/to/app
.. test app ..
# 打包
$ revel package import/path/to/app
Your archive is ready: app.tar.gz
# 拷貝至目標服務器
$ scp app.tar.gz target:/srv/
# 在目標服務器運行
$ ssh target
$ cd /srv/
$ tar xzvf app.tar.gz
$ bash run.sh
這只能工作在部署機器架構與開發機器架構相同的情況下,如果需要配置編譯為不同架構,可以看看go的交叉編譯。
##增量部署
由于靜態鏈接的二進制文件包含所有資源,可能會增長的十分迅速,這里支持增量部署。
# 在temp目錄編譯應用
$ revel build import/path/to/app /tmp/app
# 使用Rsync工具將文件夾同步到服務器的home目錄
$ rsync -vaz --rsh="ssh" /tmp/app server
# 登錄到服務器并運行程序.
...
rsync完全支持同過ssh管道復制文件,比如這樣一個復雜的連接:
# 使用自定義證書、登錄名與目標目錄的復雜例子
$ rsync -vaz --rsh="ssh -i .ssh/go.pem" /tmp/myapp2 ubuntu@ec2-50-16-80-4.compute-1.amazonaws.com:~/rsync
##服務器構建
這種方式依賴于版本控制系統,而且需要服務器具有Go的編譯環境,但可以不必考慮交叉編譯帶來的問題。
$ ssh server
... 安裝 go ...
... 配置應用的源碼庫 ...
# 進入應用的目錄 (GOPATH目錄), 拉取更新,運行應用.
$ cd gocode/src/import/path/to/app
$ git pull
$ revel run import/path/to/app prod
##Heroku
revel維護了一個heroku的構建包允許一鍵部署
https://github.com/robfig/heroku-buildpack-go-revel
##交叉編譯
為了創建交叉編譯環境,需要以源碼方式來編譯安裝go,所以必須設置好`$PATH`和`$GOPATH`,否則如果已經存在go的話,將會出現嚴重的錯誤。
當go編譯器成功安裝后,就可以設置`GOOS`與`GOARCH`環境變量來交叉編譯:
$ cd /path/to/goroot/src
$ GOOS=linux GOARCH=amd64 ./make.bash --no-clean
$ GOOS=windows GOARCH=386 ./make.bash --no-clean
然后在新的環境中設置revel并打包應用:
$ GOOS=linux GOARCH=amd64 revel package import/path/to/app
將生成的文件部署至目標服務器。
浙公網安備 33010602011771號