supervisor用为golang后台创建守护进程-阿里云开发者社区

开发者社区> 开发与运维> 正文

supervisor用为golang后台创建守护进程

简介:

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,如需转载请自行联系原作者

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章