Beego 自動化部署

姜家志發表於2016-05-23

beego 是 Go 寫的應用程式開源框架,我使用beego寫了一個專案小專案。Go 是編譯語言,需要編譯之後再部署,每次部署到服務上是件很麻煩的事情。就寫了一個自動打包部署到伺服器的指令碼,方便釋出部署。

專案結構

先看看beego專案的結構:

其中controllersviews.models以及其他的.go檔案會被打包成可執行檔案beepkg。 而靜態檔案static以及conf檔案不會被編譯,需要打包上傳部署到伺服器上。 因此在打包檔案的時候需要忽略一些檔案: 1.go檔案,已經編譯成可執行檔案 2.本地生成的一些臨時檔案 3.專案的一些配置檔案 因此我們在使用bee pack打包的時候需要忽略這些檔案,bee pack在編譯之後壓縮的的時候會預設忽略這三種檔案:.go:.DS_Store:.tmp。因此我們只需要忽略其他的檔案即可。 使用命令-exr用正規表示式忽略檔案:

bee pack -be GOOS=linux -ba -exr=’^[0-9a-f]|[*.iml]$’

因為使用了檔案儲存的session,本地目錄下會生成session的資料夾需要忽略打包[0-9a-f],[*.iml]是IntelliJ生成的專案配置檔案,在打包的時候需要忽略這些檔案。

打包指令碼

打包beego專案,同步到服務端,需要做三件事情: 1.更新程式碼 2.編譯可執行檔案,打包資源 3.同步到壓縮包到伺服器 4.伺服器解壓,重啟應用程式 首先是第一步更新程式碼:

然後需要編譯可執行檔案和打包資源:

同步壓縮包到伺服器:

解壓和重啟服務需要在伺服器端執行,可以通過ssh執行在伺服器端執行指令碼:

Supervisor

伺服器端可以使用tar命令解壓檔案,但是如何重啟應用程式呢,在伺服器端可以使用Supervisor管理beego程式,重啟應用程式。 Supervisor是一個python寫的程式管理工具,用途就是有一個程式需要每時每刻不斷的跑(web服務),但是這個程式又有可能由於各種原因有可能中斷。當程式中斷的時候又希望能自動重啟它,這個時候,我們就需要使用Supervisor,這裡我們更多的是利用Supervisor的重啟程式功能。

安裝Supervisor:

pip install supervisor

初始化配置檔案:

echo_supervisord_conf >/etc/supervisord.conf

修改配置檔案/etc/supervisord.conf新增配置:

啟動Supervisor

supervisord -c /etc/supervisord.conf

使用supervisorctl命令可以進入shell介面,管理program。 比如:

注意如果Supervisor的配置檔案更改之後一定要使用reload才能使配置修改的配置檔案生效。

在修改配置檔案的過程中,遇到了一個錯誤

解決辦法:

最終指令碼

解壓檔案並重啟服務的指令碼restart.sh:

本地開發環境部署指令碼deploy.sh:

相關文章