Repo

​https://github.com/ochinchina/supervisord​

安装方式

​go build​​​ 得到supervisord.exe,放入GOPATH/bin/或者PATH
​​​supervisord version​​ 验证是否正确安置

备注

本文不对具体参数说明,亦不对每一个功能细致讲解,仅仅对生产中使用supervisord的所经步骤进行描述。
本实例举的是windows下
有python版supervisor使用经验的体验更佳。

准备程序

假定需要守护的是这个进程,所在目录:
​​​G:\go_workspace\GOPATH\src\test_X\test_supervisord​

package main

import "github.com/gin-gonic/gin"

func main() {
r := gin.Default()
r.GET("/", func(context *gin.Context) {
context.String(200, "ok")
})
r.Run(":7111")
}

​go build -o main.exe​

准备结束
​​​G:\go_workspace\GOPATH\src\test_X\test_supervisord​​​ 下存在了​​main.go​​​ 与 ​​main.exe​

启动supervisord

先准备配置文件。
创建文件夹与对应文件
​​​E:\etc\supervisord.conf​​,内容

[inet_http_server]
port=127.0.0.1:9001

[include]
files = E:\\etc\\supervisord.d\\*.ini

​E:\etc\supervisord.d\​​,内容

[program:test_supervisord]
directory=G:\\go_workspace\\GOPATH\\src\\test_X\\test_supervisord
command=G:\\go_workspace\\GOPATH\\src\\test_X\\test_supervisord\\main 2>/home/web/projects/xyx_srv/gc.log
# command=go run G:\\go_workspace\\GOPATH\\src\\test_X\\test_supervisord\\main.go 2>/home/web/projects/xyx_srv/gc.log
stdout_logfile=G:\\go_workspace\\GOPATH\\src\\test_X\\test_supervisord\\stdout.log
stdout_logfile_backups=50
redirect_stderr=true
autostart=true
autorestart=true

以上参数复制粘贴即可,必要说明:
directory: 需要守护的程序所在的目录,也就是main.exe所在目录
command: 具体执行的命令,如上所示,既可以直接执行main.exe,又可以 go run /…/…/…/…/main.go
stdout_logfile: 控制台信息打印于该文件,可不存在,会创建自动
autostart: 自动启动
autorestart: 自动重启

开始

cmd
​​​supervisord -c E:\etc\supervisord.conf -d​

在浏览器输入 ​​localhost:7111​​ 得到ok

cmd
​​​netstat -ano|findstr 7111​​​ 查看7111所在pid
​​​taskkill/pid 14616 -t -f​​ 假设7111对应pid14616,则杀死14616

杀死以后,查看supervisor窗口,发现已经自动重启,在浏览器输入 ​​localhost:7111​​ 得到ok