知乎参考链接
参考链接2

安装

要求机器安装了python 和 pip

pip install supervisor

配置

mkdir /etc/supervisord.d
echo_supervisord_conf > /etc/supervisord.conf

使用这两个默认安装位置就好
然后要稍微修改一下配置信息

sudo vi /etc/supervisord.conf

添加这个到文件的末尾
第一段的意思是使用引用
第二段的意思是引用的文件地址的类型

[include]
files = /etc/supervisord.d/*.ini

编写需要被Supervisor管理的进程

到配置的引用文件地址那里添加
在这个文件夹/etc/supervisord.d下添加 go.ini 文件
内容是:

[program:go_serve]
command=go run ./main.go
directory=/www/wwwroot/go_serve
startsecs = 5
autorestart = true
autostart=true
redirect_stderr=true
stdout_logfile=/www/wwwroot/go_serve.log

写这个文件的时候后面不要带备注
其中的意思看下面这个从网上找的:

[program:tomcat]                                        #程序唯一名称
directory=/usr/local/tomcat                             #程序路径
command=/usr/local/tomcat/bin/catalina.sh run           #运行程序的命令
autostart=true                                          #是否在supervisord启动后tomcat也启动
startsecs=10                                            #启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true                                        #程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启;意思为如果不是supervisord来关闭的该进程则认为不正当关闭,supervisord会再次把该进程给启动起来,只能使用该supervisorctl来进行关闭、启动、重启操作 
startretries=3                                          #启动失败自动重试次数,默认是3
user=root                                               #用哪个用户启动进程,默认是root
priority=999                                            #进程启动优先级,默认999,假如Supervisord需要管理多个进程,那么值小的优先启动
stopsignal=INT
redirect_stderr=true                                    #把stderr重定向到stdout标准输出,默认false
stdout_logfile_maxbytes=200MB                           #stdout标准输出日志文件大小,日志文件大小到200M后则进行切割,切割后的日志文件会标示为catalina.out1,catalina.out2,catalina.out3...,默认50MB
stdout_logfile_backups = 100                            #stdout标准输出日志文件备份数,保存100个200MB的日志文件,超过100个后老的将被删除,默认为10保存10个
stdout_logfile=/usr/local/tomcat/logs/catalina.out      #标准日志输出位置,如果输出位置不存在则会启动失败
stopasgroup=false                                       #默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false                                       #默认为false,向进程组发送kill信号,包括子进程

启动supervisor

#supervisord启动
supervisord -c /etc/supervisord.conf   

然后我们启动go_serve这个进程

supervisorctl start go_serve   

相关的命令:

supervisorctl start
supervisorctl stop
supervisorctl restart
supervisorctl reoload 
supervisorctl status

相关问题

如果提示ERROR (no such process)

查看 supervisord.conf 后面的配置,
执行启动命令,reload命令都是正常的,没有报错,查看进程状态的时候什么都没有显示,说明进程没有开启, 遂执行supervisorctl start golang-server命令,报错golang-server: ERROR (no such process)
解决问题 : 配置文件supervisor.conf中 ;[include]冒号去掉

By cc

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注