一、概述

supervisor为进程配置提供的的代码块为program ,可以直接添加在服务端配置文件中,启动进程的时候就会加载运行这个配置。

不过一般不推荐这样做,因为supervisor提供了一种类似nginx的配置文件的方式:把配置单独写到一个文件中,然后再把文件包含到服务端配置。

二、步骤

1. 创建配置文件

建议专门创建一个文件夹用来存放各个配置文件,这里创建了一个文件夹/etc/supervisor 用来存放 ,以后有新的配置文件直接放到/etc/supervisor/ 下即可。

# 在配置文件的同级目录下创建文件夹保存配置文件
mkdir supervisor
# 创建配置文件
touch ***.ini

2. 把配置文件包含到服务端的include模块中

# 在supervisord.conf中添加配置文件的路径
[include]
files = supervisor/*.ini # 注意相对路径和绝对路径

三、配置

配置文件的主要包含以下参数,根据相关的需要设定相应的参数:

[program:***]  # 程序的名称
directory = /home/***/*** ; 程序的启动目录
command = *** -c ***  ; 启动命令
autostart = true     ; 随supervisord的启动自动启动
startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true   ; 程序异常退出后自动重启
startretries = 3     ; 启动失败自动重试次数,默认是 3
user = root          ; 启动的用户身份
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /var/log/supervisor/***/log.log
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20     ; stdout 日志文件备份数
redirect_stderr = false ; 把 stderr 重定向到 stdout,默认 false
stderr_logfile=/var/log/supervisor/***/err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=10
; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere

例如,一份shadowsocks  的配置为:

[program:shadowsocks]
command = /usr/local/python27/bin/ssserver -c /etc/shadowsocks.json
startsecs=3
autorestart=true
; 日志
stdout_logfile=/var/log/supervisor/shadowsocks/log.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stderr_logfile=/var/log/supervisor/shadowsocks/err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10

每次配置完之后需要使用supervisorctl reload 命令重新载入配置

最后修改:2017 年 10 月 21 日
如果觉得我的文章对你有用,请随意赞赏