go 守护进程部署

来源:互联网 发布:java标识符 编辑:程序博客网 时间:2024/06/08 19:49

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

sudo yum install python-setuptoolssudo easy_install supervisor

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

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,在最后增加运行程序设置

[program:go-http-server]command=/usr/local/ponpon/gowork/src/test/testdirectory=/usr/local/ponpon/gowork/src/testautostart=trueautorestart=truestartsecs=10stdout_logfile=/var/log/stdout.logstdout_logfile_maxbytes=1MBstdout_logfile_backups=10stdout_capture_maxbytes=1MBstderr_logfile=/var/log/stderr.logstderr_logfile_maxbytes=1MBstderr_logfile_backups=10stderr_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即可

原创粉丝点击