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