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