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

supervisor是一个unix的系统进程管理软件,可以用它来管理apache、Nginx等服务,若服务挂了可以让它们自动重启。下面基于centos 6.6,描述下具体实现:

sudoyuminstallpython-setuptools
sudoeasy_installsupervisor

如果没有看到什么报错,那么就安装成功了,可以使用echo_supervisord_conf查看配置详情,而后生成配置文件

sudoecho_supervisord_conf>/etc/supervisord.conf

假设如下一段简单的golang代码

package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc( "/" , (w http.ResponseWriter,r *http.Request) {
fmt.Fprintf(w, "Hello world" )
})
err := http.ListenAndServe( ":9090" if err != nil {
log.Fatal( "ListenAndServe: " }
}


go build编译,在/usr/local/ponpon/gowork/src/test/生成可执行文件test。

编辑/etc/supervisord.conf,在最后增加运行程序设置


[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

sudo/usr/bin/supervisord-c/etc/supervisord.conf

如果提示/tmp/supervisord.sock 报错,删除/tmp/supervisord.sock重新启动supervisor即可

相关文章

程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息...
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简...
简介 默克尔树(MerkleTree)是一种典型的二叉树结构,其主要特点为: 最下面的叶节点包含存储数据或其...
接下来学习并发编程, 并发编程是go语言最有特色的地方, go对并发编程是原生支持. goroutine是go中最近本...
先普及一下, 什么是广度优先搜索 广度优先搜索类似于树的层次遍历。从图中的某一顶点出发,遍历每一个顶...
第一天: 接口的定义和实现 第二天: 一. go语言是面向接口编程. 在学习继承的时候说过, go语言只有封装,...