supervisor用爲golang後臺建立守護進程

supervisor是一個unix的系統進程管理軟件,能夠用它來管理apache、nginx等服務,若服務掛了能夠讓它們自動重啓。下面基於centos 6.6,描述下具體實現:python

sudo yum install python-setuptools
sudo easy_install supervisor

若是沒有看到什麼報錯,那麼就安裝成功了,能夠使用echo_supervisord_conf查看配置詳情,然後生成配置文件。nginx

sudo echo_supervisord_conf > /etc/supervisord.conf

假設以下一段簡單的golang代碼:golang

package main
 
import (
     "fmt"
     "log"
     "net/http"
)
 
func main() {
     http.HandleFunc( "/" func (w http.ResponseWriter, r *http.Request) {
         fmt.Fprintf(w,  "Hello world" )
     })
 
     err := http.ListenAndServe( ":9090" , nil)
     if err != nil {
         log.Fatal( "ListenAndServe: " , err)
     }
}


go build編譯,在/usr/local/ponpon/gowork/src/test/生成可執行文件test。apache

編輯/etc/supervisord.conf,在最後增長運行程序設置centos


[program:go-http-server]
command=/usr/local/ponpon/gowork/src/test/test
directory=/usr/local/ponpon/gowork/src/test
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

幾個配置說明:bash

command:表示運行的命令,填入完整的路徑便可。ide

directory:表示cd到應用的目錄下
autostart:表示是否跟隨supervisor一塊兒啓動。
autorestart:若是該程序掛了,是否從新啓動。
stdout_logfile:終端標準輸出重定向文件。
stderr_logfile:終端錯誤輸出重定向文件。ui

最後啓動supervisorspa

sudo /usr/bin/supervisord -c /etc/supervisord.conf

若是提示/tmp/supervisord.sock 報錯,刪除/tmp/supervisord.sock從新啓動supervisor便可unix

相關文章
相關標籤/搜索