为了保证web项目一直处于运行状态,在程序遇到异常丶报错时,当即重启服务html
supervisor是使用python编写的一个进程管理工具,能够在linux系统下启动,重启,关闭进程python
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 是一个 C/S 模型的程序,supervisord
是 server 端,supervisorctl
是 client 端。linux
# vim /etc/supervisord.conf # 配置文件底部,配置include [include] files=/etc/supervisor/*.conf # 引入 `/etc/supervisor/conf.d/` 下的 `.conf` 文件,若你本地无/etc/supervisor目录,请自建
rogram 的配置文件就写在,supervisord 配置中 include
项的路径下:web
# /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
supervisord : 启动supervisor supervisorctl reload :修改完配置文件后从新启动supervisor supervisorctl status :查看supervisor监管的进程状态 supervisorctl start 进程名 :启动XXX进程 supervisorctl stop 进程名 :中止XXX进程 supervisorctl stop all:中止所有进程,注:start、restart、stop都不会载入最新的配置文件。 supervisorctl update:根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启