简介
Supervisor是Linux/Unix系统下的一个进程管理工具。可以监听、启动、停止、重启一个或多个进程。当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动重启恢复。
安装
pip install supervisor
配置
1.新建supervisor配置文件目录
mkdir ~/supervisor
mkdir ~/supservisor/config.d
mkdir ~/supervisor/logs
2.配置
vim ~/supervisor/supervisord.conf
复制下边的配置文件至~/supervisor/supervisord.conf中,修改本机ip为当前部署机器的ip
配置文件:
[unix_http_server]
file=~/supervisor/supervisor.sock ;UNIX socket 文件,supervisorctl 会使用
;chmod=0700 ;socket文件的mode,默认是0700
;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid
[inet_http_server] ;HTTP服务器,提供web管理界面
port=*:9010 ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
username=user ;登录管理后台的用户名
password=123 ;登录管理后台的密码
[supervisord]
logfile=~/supervisor/supervisord.log ;日志文件,默认是 $CWD/supervisord.log
logfile_maxbytes=50MB ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小
logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份
loglevel=info ;日志级别,默认info,其它: debug,warn,trace
pidfile=~/supervisor/supervisord.pid ;pid 文件
nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动
minfds=10240 ;可以打开的文件描述符的最小值,默认 1024
minprocs=200 ;可以打开的进程数的最小值,默认 200
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
;serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
serverurl=http://本机ip:9010 ; 通过HTTP的方式连接supervisord
;包含其它配置文件
[include]
files = ~/supervisor/config.d/*.ini ;可以指定一个或多个以.ini结束的配置文件
3.配置需要守护的程序进程
下列配置以 jupyter 为例,可根据自己需求自行修改
在~/supervisor/config.d 下新建 jupyter.ini 配置文件
vim ~/supervisor/config.d/jupyter.ini
复制下列进程配置文件并按照自己的需求修改:
[program:jupyter]
command=jupyter notebook --ip=0.0.0.0 --port=10022 --no-browser --allow-root
stdout_logfile=~/supervisor/logs/jupyter.out
autostart=true
autorestart=true
startsecs=5
priority=1
stopasgroup=true
killasgroup=true
启动服务
supervisord -c ~/supervisor/supervisord.conf
控制访问
1.web访问
本地ip:9001
账号密码与配置文件一致
2.终端访问
supervisorctl
进入客户端终端
用户密码与配置文件的一致
终端命令
stop jupyter // 表示停止进程
stop all //停止所有进程
help # 查看帮助
status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)