一、安装:
1. pip install supervisor 或者 yum install supervisor -y
2. 创建文件目录:mkdir /etc/supervisor/conf.d -p (路径一)
3. 进入etc目录:cd /etc
4. 生成配置文件:echo_supervisor_conf > supervisord.conf
二、配置:
5. 修改配置文件:vim supervisord.conf
如果你不需要自定义一些日志路径,或修改用户,那么只要修改最后两行即可
[include] # 打开注释
files = /etc/supervisor/conf.d/*.ini # (路径一目录下)加载该路径下的所有.ini结尾的配置文件,当然你也可以使用后缀为.conf,只要files配置和你实际文件名后缀一致即可
三、添加启动配置:
6. 进入个人配置路径:cd /etc/supervisor/conf.d
7. 创建配置tornado.ini (这里的文件后缀和你配置的files要一致,否则不会被执行)
[group:tornadoes]
programs=tornado-0,tornado-1,tornado-2,tornado-3
[program:tornado-0]
command=python3.6 python3 /home/caddok/projects/chat/server.py --port=8000
directory=/home/caddok/projects/chat
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/home/caddok/projects/chat/tornado.log
loglevel=info
[program:tornado-1]
command=python3 /home/caddok/projects/chat/server.py --port=8001
directory=/home/caddok/projects/chat
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/home/caddok/projects/chat/tornado.log
loglevel=info
#说明:1. 最好先测试下你的启动命令是否可以正常启动;
2. user和你当前用户一致即可(我是root登录的)
3.日志路径根据需求自定义
四、启动测试
启动:supervisord -c /etc/supervisord.conf # 通过指定配置文件启动,没有报错即是正常
执行:supervisorctl # 会看到已经启动的子程序,如果啥也没看到,请检查supervisord.conf后两行,是否都取消了注释,配置文件加载路径以及后缀名是否一致
重启报错:
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
For help, use /home/caddok/virtualenvs/chat/bin/supervisord -h
解决:unlink /tmp/supervisor.sock (这个路径是在supervisord.conf中,默认是/tmp/下,如果你有修改,改成自己的即可)
五、相关命令
supervisor有supervisord和supervisorctl两种命令类型:
supervisord是服务相关的命令
supervisorctl是客户端相关的命令
supervisor涉及的状态主要有
running:进程处于运行状态
starting:Supervisor 收到启动请求后,进程处于正在启动过程中
stopped:进程处于关闭状态
stopping:Supervisor 收到关闭请求后,进程处于正在关闭过程中
backoff:进程进入 starting 状态后,由于马上就退出导致没能进入 running 状态
fatal:进程没有正常启动
exited:进程从 running 状态退出
常用的命令如下:
#关闭所有任务
supervisorctl shutdown
# 启动某个进程
supervisorctl start programxxx
# 重启某个进程
supervisorctl restart programxxx
# 停止全部进程 注:start、restart、stop都不会载入最新的配置文件
supervisorctl stop all
# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl reload
# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisorctl update