Supervisor 使用方式大全
安装
apt install supervisor
配置文件
默认位置 /etc/supervisor/supervisord.conf
; supervisor config file
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
chmod=0700 ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor/conf.d/*.conf
关键看最后一句: files = /etc/supervisor/conf.d/*.conf,说明 /etc/supervisor/conf.d/ 下所有以 .conf 为后缀的文件会被自动引入
使用
supervisorctl 需要 root 用户来使用
在 conf.d 目录下创建一个配置命名为 pyapi.conf :
[program:pyapi]
environment=FLASK_APP=hello.py,FLASK_ENV=development
command=/bin/bash -c "source env/bin/activate && flask run --host=0.0.0.0"
directory=/home/feng/apps/pyapi
user=feng
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/pyapi_out.log
stderr_logfile=/var/log/supervisor/pyapi_err.log
为了使我们的服务生效,命令行输入 supervisorctl update 然后回车(因为需要 root 用户来使用,普通用户需要加 sudo)
换一种方式使用
使用命令
supervisorctl
则可以进入 supervisor 控制台(因为需要 root 用户来使用,普通用户需要加 sudo)
supervisor> help
default commands (type help <topic>):
=====================================
add exit open reload restart start tail
avail fg pid remove shutdown status update
clear maintail quit reread signal stop version
想要让我们的服务生效,输入 update 然后回车
想要退出控制台,输入 exit 然后回车
再换一种方式使用
往 supervisord.conf 里添加 inet_http_server
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))
接着就可以使用浏览器访问本地 web 控制台了
该修改需要重启 supervisor 服务(使用 supervisorctl 的方式进入 supervisor 控制台,然后输入 reload 回车)