ubuntu環境使用supervisor部署Go應用

首先進行前期準備,安裝supervisor

sudo apt-get install supervisor

安裝後,通過Supervisor附送的貼心的小腳本生成默認的配置文件

sudo echo_supervisord_conf > /etc/supervisord.conf

然後打開配置文件確認下(/etc/supervisord/supervisord.conf),是否有以下配置,沒有的話手動添加一下

[include]
files = /etc/supervisor/conf.d/*.conf

第二步開始進行Go項目的編譯,-o 指定輸出的可執行文件名,GOARCH根據系統是64位還是32位來設置,64位amd64,32位i386,系統環境通過 uname -a 命令可以查看

env GOOS=linux GOARCH=amd64 go build -o myexec main.go lib.go

修改下可執行文件權限

sudo chmod -R 777 myexec

第三步配置項目的supervisor配置文件

sudo vim /etc/supervisor/conf.d/myexec.conf
[program:myexec]
command=/data/golang/myexec
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/myexec.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/myexec_err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

幾個配置說明:

program: 項目名稱
command:表示運行的命令,填入完整的路徑即可。
autostart:表示是否跟隨supervisor一起啓動。
autorestart:如果該程序掛了,是否重新啓動。
stdout_logfile:終端標準輸出重定向文件,日誌文件最好自己先創建。
stderr_logfile:終端錯誤輸出重定向文件,日誌文件最好自己先創建。

創建好以後,我們開始啓動

sudo service supervisor start //啓動服務
sudo supervisorctl reload

提示:Restarted supervisord
然後我們再查看狀態,輸入命令,看到myexec運行中。

sudo supervisorctl status
myexec                              RUNNING    pid 6219, uptime 0:00:24

到此,go項目的部署就完成了。

supervisor常用命令:
supervisorctl start programxxx,啓動某個進程
supervisorctl restart programxxx,重啓某個進程
supervisorctl stop groupworker: ,重啓所有屬於名爲groupworker這個分組的進程(start,restart同理)
supervisorctl stop all,停止全部進程,注:start、restart、stop都不會載入最新的配置文件。
supervisorctl reload,載入最新的配置文件,停止原有進程並按新的配置啓動、管理所有進程。
supervisorctl update,根據最新的配置文件,啓動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啓。
supervisor啓動和停止的日誌文件存放在/var/log/supervisor/supervisord.log
注意:顯式用stop停止掉的進程,用reload或者update都不會自動重啓

我部署過程中遇到go服務啓動不了,可以使用以下命令查看啓動過程中的錯誤信息,myexec你指定的項目名稱

sudo supervisorctl tail myexec stdout

 

參考:https://www.jianshu.com/p/13ab43e0895b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章