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