Supervisor备忘录
背景介绍
很多人可能跟笔者一样,租了个阿里云或者服务器,然后偷摸搞点自己的博客或者什么的,怀着激动的心情把自己费了好多键盘和脑细胞的东西,传到服务器上,然后跑起来了, 又怀着同样激动的心情,邀来同寝室的小伙伴,让他们强势围观一把。
然后,你想到SSH断了怎么办? 于是你拼命搜索找到了nohup,感觉很神奇。但想到要是服务因为某种异常挂掉了怎么办?自己写shell脚本?今天就为大家介绍这款神器Supervisor! 有了Supervisor,手也不酸了,头也不疼了,睡觉也更安心了!
基本介绍
Supervisor的介绍里面, 它强调自己特性的第一点就是Simple, 当然作为一款过硬的后台进程管理利器,Only simple is not enough! 所以Supervisor还有集中化管理,效率超高, 可扩展, 兼容性高,应用广泛等特性。
Supervisor包括:
-
supervisord: 这是supervor的服务器端, 负责响应你的命令,启动子进程等里子应该做的dirty work.
-
supervisorctl:客户端,负责面子上的东西,比如跟你交互, 逗你玩儿等。
安装
-
yum install supervisor
yum.png -
pip install supervisor
什么? 说我不应该用root? 眼力不错!
配置
笔者的系统是CentOS
, 所以配置文件在系统中的位置是/etc/supervisor.conf
打开之后,一般是这样的。
比如你要用supervisor管理自己写的博客 blog.py
[program:myblog] command=/app/pmweb27/bin/python /app/blog.py ;directory=/root ;user=root autostart=true stopsignal=QUIT stderr_logfile=/pushpmdata.err ; stderr log path, NONE for none; default AUTO stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50M
command
: 要运行的系统命令,因为我装了virtualenv
,所以python的路径有点怪,自己配置时,改成相应的位置就可以。
directory
: 程序执行目录,因为我直接指定了文件的绝对路径,所以注释掉了。
user
: 指定程序运行账户,没有特殊需求可以不设置。
autostart
: 当supervisord启动时,自动执行command
stderr_logfile
: 错误日志存放位置。
stderr_logfile_maxbytes
:单个错误日志。
运行
如果supervisor.conf
不是默认位置,可以用-c
指定。
supervord -c /etc/supervisor.conf
当然,可以先用 service supervisord status
命令查看supervisord
运行状态。
-
supervisorctl -c /etc/supervisor.conf start myblog
, 你的程序就可以在后台跑起来了 -
supervisorctl -c /etc/supervisor.conf restart myblog
, 重启myblog -
supervisorctl -c /etc/supervisor.conf stop myblog
, 关闭myblog
程序down了,supervisor会自动帮你重新启动,后面你就可以高枕无忧了。
更多个性化设定你可以参考Supervisor官网。
PS:简书的Markdown做的还是挺不错的,推荐大家试试!