首先進行前期準備,安裝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