官网:http://supervisord.org/使用说明讲解很是详细html
Supervisor 是一个客户端/服务器系统,容许用户监控和控制类 Unix 操做系统上的进程数。python
是client/server 系统shell
把不是守护进程的进程变成守护进程django
监控它本身启动的进程,相似于看门狗centos
能够做为开机启动的一种封装服务器
能够精确控制进程的状态,而不是pidfile那么不许确spa
本文是基于centos6.5上的安装教程.操作系统
说白了就是个python包,官方文档,我这里系统是centos6.5 root用户.net
pip install supervisor rest
通常安装完的时候显示安装路径,若是不在bin路径,就本身添加一个软链接
配置文件在 /etc/supervisord.conf
我这里安装以后没有发现,我先到安装目录下找找,没有在本身建立那个文件,若是启动没有找
到就在启动命令中添加配置文件路径。
supervisord 提供了一个模板文件,执行下面shell文件或者输出到文件中,改改就能够用了
echo_supervisord_conf
#或者
echo_supervisord_conf > supervisord.conf
不过模板文件有点太多了,咱们仍是按照文档写点程序来配置把,此次的目标是启动一个django开发
服务器而且让他成为一个独立进程,能够控制这个进程。
创建一个最简单的django,并能够启动
[root@localhost ~]# pip install -i http://pypi.douban.com/simple django==1.6
[root@localhost ~]# su - lzz
[lzz@localhost ~]$ django-admin.py startproject lzztest
[lzz@localhost ~]$ cd lzztest/
[lzz@localhost lzztest]$ python manage.py runserver 8000 #看到能够正常启动,crtl+c关闭
[lzz@localhost lzztest]$ exit #切会到root用户下
编辑supervisord文件 文件的内容以下(有错误),文件的位置就是root的home路径 /root
user=lzz
command=/usr/bin/python /home/lzz/lzztest/manage.py runserver 8000
autostart=true
autorestart=true
stderr_logfile=/home/lzz/lzztest/logs/err.log
stdout_logfile=/home/lzz/lzztest/logs/out.log
stopsignal=INT
启动下观察效果,出现了一个错误。
[root@localhost ~]# supervisord -c ./supervisord.conf
Error: .ini file does not include supervisord section
For help, use /usr/bin/supervisord -h
意思是少了 [supervisrod] 配置项,能够参考 supervisord-section-settings, 修改配置文件以下,还有log文件最好先创建好,supervisord不会本身建立。
[program:djangotest]
user=lzz
command=/usr/bin/python /home/lzz/lzztest/manage.py runserver 8000
autostart=true
autorestart=true
stderr_logfile=/home/lzz/lzztest/logs/err.log
stdout_logfile=/home/lzz/lzztest/logs/out.log
stopsignal=INT
[supervisord]
再次启动:
[root@localhost ~]# supervisord -c /root/supervisord.conf
正常启动了,咱们来看下进程: ps -efH|grep python
root 26253 1 0 02:57 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /root/supervisord.conf
lzz 26254 26253 0 02:57 ? 00:00:00 /usr/bin/python /home/lzz/lzztest/manage.py runserver 8000
lzz 26255 26254 1 02:57 ? 00:00:01 /usr/bin/python /home/lzz/lzztest/manage.py runserver 8000
终端关闭,从新打开别的终端能够看到进程正常。实验基本成功,后面进程之间关系,怎么自动启动和中止被控制的程序等之后在深刻研究下。