一丶介绍
为了保证web项目一直处于运行状态,在程序遇到异常丶报错时,立即重启服务
二丶简介
supervisor是使用python编写的一个进程管理工具,可以在linux系统下启动,重启,关闭进程
三丶安装
1.python安装:pip install supervisor(不推荐)
1.源码安装:https://pypi.python.org/pypi/supervisor
>>>cd /usr/local/src
>>>wget https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419ea/supervisor-3.3.2.tar.gz
>>>tar -zxvf supervisor-3.3.2.tar.gz
2.生成配置文件:echo_supervisord_conf > /etc/supervisord.conf
3.启动:supervisord -c /etc/supervisord.conf
四丶Supervisor 配置
Supervisor 是一个 C/S 模型的程序,supervisord
是 server 端,supervisorctl
是 client 端。
1.supervisor配置
# vim /etc/supervisord.conf
# 配置文件底部,配置include
[include]
files=/etc/supervisor/*.conf # 引入 `/etc/supervisor/conf.d/` 下的 `.conf` 文件,若你本地无/etc/supervisor目录,请自建
2.program 配置
rogram 的配置文件就写在,supervisord 配置中 include
项的路径下:
# /etc/supervisor/conf.d/ 目录下创建xxx.conf文件
# vim xxx.conf
[program:app] ; 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
autorestart=True ; 程序异常退出后自动重启
autostart=True ; 在 supervisord 启动的时候也自动启动
redirect_stderr=True ; 把 stderr 重定向到 stdout,默认 false
environment=PATH="/home/app_env/bin" ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是使用指定的 virtualenv 环境
command=python server.py ; 启动命令,与手动在命令行启动的命令是一样的
user=ubuntu ; 用哪个用户启动
directory=/home/app/ ; 程序的启动目录
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log
五丶supervisorctl常用命令
supervisord : 启动supervisor
supervisorctl reload :修改完配置文件后重新启动supervisor
supervisorctl status :查看supervisor监管的进程状态
supervisorctl start 进程名 :启动XXX进程
supervisorctl stop 进程名 :停止XXX进程
supervisorctl stop all:停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl update:根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启