supervisor安装和使用
什么是supervisor?
Supervisor是用Python开发的进程管理程序,能将普通的命令行进程变为后台daemon程序,并监控进程状态,异常退出时能自动重启。 官网地址:[http://supervisord.org/](http://supervisord.org/)安装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界面如下:
