官網: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
終端關閉,從新打開別的終端能夠看到進程正常。實驗基本成功,後面進程之間關係,怎麼自動啓動和中止被控制的程序等之後在深刻研究下。