supervisor安装和使用

什么是supervisor?

Supervisor是用Python开发的进程管理程序,能将普通的命令行进程变为后台daemon程序,并监控进程状态,异常退出时能自动重启。 官网地址:[http://supervisord.org/](http://supervisord.org/)

TOC

安装supervisor

CentOS安装

1.使用yum安装

yum -y install supervisor

Ubuntu安装

1.使用apt安装

apt -y install supervisor

启动程序

启动命令如下:
如果在容器中就需要取消后台启动,否则容器不会一直running状态

/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
# 前台启动命令
/usr/bin/python3 /usr/bin/supervisord --nodaemon

supervisor使用

配置文件文件位置(CentOS):/etc/supervisord.conf
配置文件文件位置(Ubuntu):/etc/supervisor/supervisord.conf

cat /etc/supervisor/supervisord.conf
------------------------------------
[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)
[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
[include]
files = /etc/supervisor/conf.d/*.conf

可以看到有个include选项,Ubuntu只需要在/etc/supervisor/conf.d/目录下下添加任务文件即可,则CentOS需要在/etc/supervisord.d/目录下添加任务文件。
注意:apt安装的supervisor默认是以.conf结尾,yum安装则默认是以.ini结尾

任务配置文件

1.单进程配置文件

cat > /etc/supervisor/conf.d/single-process-demo.conf << EOF
[program:single-process]
user=root
command=php artisan queue:work
autostart=true
autorestart=false
numprocs=1
startsecs=0
redirect_stderr=true
stdout_logfile=/var/log/single-process.log
stdout_logfile_maxbytes=0
EOF

2.多进程配置文件

cat > /etc/supervisor/conf.d/multi-process-demo.conf << EOF
[program:multi-process]
user=root
process_name=%(program_name)s_%(process_num)02d
directory=/var/www/html
command=php artisan queue:work
autostart=true
autorestart=true
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/multi-process.log
EOF

supervisor命令

管理命令:supervisorctl

# 查看所有进程的状态
supervisorctl status
# 启动服务进程
supervisorctl start demo
# 停止服务进程
supervisorctl stop demo
# 重启服务进程
supervisorctl restart demo
# 重新加载新的服务配置
supervisorctl update demo
# 重新启动配置的所有服务
supervisorctl reload

如果把demo换成all就是管理所有的服务

supervisor的Web界面

配置配置文件添加如下配置:

vim /etc/superviosrd.conf
---------------------------
[inet_http_server]
port = 9001
username = admin
password = yqBx7W1ueTcfFb8IoMA=

然后重启服务

systemctl restart supervisor

测试阶段

访问9001端口访问web界面,supervisor的web界面如下:
supervisor.001