简介:
supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。可以很方便的监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
写在前面:
一开始使用yum安装,发现安装完成后找不到对应的程序软件,而且python也不认识,然后就使用python自带的pip来安装,安装步骤如下:
1,python3 -m install supervisor
2,登陆python控制台输入import supervisor 查看是否能成功加载
3,生成配置文件(supervisord.conf):
找到echo_supervisord_conf程序,我的是安在了/usr/local/bin/下,进入该目录,可以执行以下命令
./echo_supervisord_conf > /etc/supervisord.conf
4,启动supervisor:
./supervisord -c /etc/supervisord.conf
5,查看状态:
./supervisorctl status
以下是我的样例配置文件
; Sample supervisor config file.
;
; 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
其实就改了最后俩行,新建了一个以后所有的服务存放的目录和配置文件
配置文件server.conf内容为:
[program:app]
command=python manage.py runserver *.*.*.*:3000
autorstart=true
redirect_stderr=true
stdout_logfile=/mnt/log/supervisord_server.log
directory=/home/DjangoTest/HelloDjango
user=root
priority=1
以上所有配置就结束了,接下来重新启动程序
./supervisord -c /etc/supervisord.conf
查看状态会有显示如下:
表示配置的服务启动成功,手动测试停了这个APP服务,会发现自己就会重启。
supervisorctl 是 supervisord的命令行客户端工具
supervisorctl status:查看所有进程的状态
supervisorctl stop app:停止app
supervisorctl start app:启动app
supervisorctl restart app: 重启app
supervisorctl update :配置文件修改后可以使用该命令加载新的配置
supervisorctl reload: 重新启动配置中的所有程序
...
把app 换成all 可以管理配置中的所有进程
直接输入:supervisorctl 进入supervisorctl 的shell交互界面,上面的命令不带supervisorctl 可直接使用
注:在执行./supervisord -c /etc/supervisord.conf
启动过程中会有Error: Another program is already listening on a port that one of our HTTP servers is configured to报错
解决方案如下:
find / -name supervisor.sock
cd 到目录下,然后执行unlink supervisor.sock,就行了