supervisor是一个unix的系统进程管理软件,可以用它来管理apache、nginx等服务,若服务挂了可以让它们自动重启。下面基于centos 6.6,描述下具体实现:
1
2
|
sudo
yum
install
python-setuptools
sudo
easy_install supervisor
|
如果没有看到什么报错,那么就安装成功了,可以使用echo_supervisord_conf查看配置详情,而后生成配置文件。
1
|
sudo
echo_supervisord_conf >
/etc/supervisord
.conf
|
假设如下一段简单的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。
编辑/etc/supervisord.conf,在最后增加运行程序设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[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
|
几个配置说明:
command:表示运行的命令,填入完整的路径即可。
directory:表示cd到应用的目录下
autostart:表示是否跟随supervisor一起启动。
autorestart:如果该程序挂了,是否重新启动。
stdout_logfile:终端标准输出重定向文件。
stderr_logfile:终端错误输出重定向文件。
最后启动supervisor
1
|
sudo
/usr/bin/supervisord
-c
/etc/supervisord
.conf
|
如果提示/tmp/supervisord.sock 报错,删除/tmp/supervisord.sock重新启动supervisor即可
本文转自 ponpon_ 51CTO博客,原文链接:http://blog.51cto.com/liuxp0827/1643620,如需转载请自行联系原作者