本文的原文连接是:
http://blog.csdn.net/freewebsys/article/details/79129390
1,关于supervisord
是一个supervisord 是一个 golang 写的一个进程管理工具。
https://github.com/ochinchina/supervisord
项目地址github。
python 有一个supervisor,这个和那个类似。
主要是因为这个是golang 写的可以给alpine 使用,也就几MB。
不用安装python 环境非常小。
docker 启动主进程 supervisord,然后再启动服务进程。
这样要是没有启动来可以进去看看啥问题,修改配置文件。
看看日志啥的都非常的方便。要不然直接docker 就没有起来。
报linux 错误。啥的都看不详细。
2,编译安装
项目使用govendor 进行依赖管理。
#安装
go get -u github.com/kardianos/govendor
go install github.com/kardianos/govendor
#初始化
govendor init
#加入本地 vendor目录当中。
govendor add +external
#查看生成列表。
govendor list
govendor fetch github.com/gorilla/rpc
govendor fetch github.com/jessevdk/go-flags
govendor fetch github.com/ochinchina/go-ini
govendor fetch github.com/ochinchina/gorilla-xmlrpc/xml
govendor fetch github.com/sevlyar/go-daemon
弄好了之后的vendor,目录文件夹。
然后go build 就可以啦。
3,配置文件
特别的简单 supervisord.conf
[inet_http_server]
port=@H_404_63@127.0.@H_404_63@0.1:@H_404_63@9001
[program:router]
command = /opt/router.a -c /opt/router.conf
stdout_logfile=/data/logs/router.log
[program:logic]
command = /opt/logic.a -c /opt/logic.conf
stdout_logfile=/data/logs/logic.log
[program:comet]
command = /opt/comet.a -c /opt/comet.conf
stdout_logfile=/data/logs/comet.log
[program:job]
command = /opt/job.a -c /opt/job.conf
stdout_logfile=/data/logs/job.log
需要在 program:xxxx 这样的配置下就行了。
当时发现一个问题,日志没有,没有定向输出日志。
必须要配置 stdout_logfile 到一个文件当中。
上面的是一个 goim 的启动,让router logic comet job 这几个服务。
一起启动起来,并且在监控中,如果进程死了。重新拉起来。
docker 启动配置:-c 指向配置文件
/opt/supervisord -c supervisor.conf
4,总结
使用 supervisord 还是非常方便的,就是官方没有上传 vender 文件夹。
需要自己下载 依赖包。
使用超级简单,一个配置文件就好了。
然后管理多个进程,并且进程死掉了,可以重新拉起来。