使用supervisor管理進程
原文連接:使用supervisor管理進程
一档痪、摘要
supervisor是一個進程管理工具,剛工作就接觸到了吓蘑,不過當時因為被腳本封裝好了钥顽,所以都是直接用,對它的理解也僅僅是知道了有這么一個東西舞箍, 想著有機會了再深入了解舰褪。
一早因為機緣巧合要把oss掛載到主機,掛載的時候要用到supervisor疏橄,本來打算按照教程先搞一個占拍,沒想到中途遇到麻煩,走不下去了捎迫。沒辦法刷喜,只能先停下來好好鉆研一下了,反正以后也要用到,于是就開始了一天的supervisor之旅立砸。
supervisor是一個用python寫的進程管理工具,可以很方便的用來啟動初茶、重啟颗祝、關閉進程。除了對單個進程的控制恼布,還可以同時啟動螺戳、關閉多個進程,比如很不幸的服務器出問題導致所有應用程序都被殺死折汞,此時可以用 supervisor 同時啟動所有應用程序而不是一個一個地敲命令啟動倔幼。
二、安裝方法
安裝有兩種方式:
一種是直接使用yum命令安裝爽待,這種安裝的好處是安裝后不用設置鏈接损同,直接就能使用命令翩腐。
yum install supervisor
第二種是使用python的pip
工具安裝,然后手動創(chuàng)建軟鏈接:
pip install supervisor
# 安裝后程序的二進制文件會存在python安裝目錄下的bin目錄
cd /usr/local/python27/bin
# 創(chuàng)建軟鏈接
ln -s /usr/local/python27/bin/supervisorctl /usr/bin/supervisorctl
ln -s /usr/local/python27/bin/supervisord /usr/bin/supervisord
三膏燃、運行
supervisor
包含三大部分:supervisord
supervisorctl
和我們的應用程序茂卦,supervisord
是服務端,supervistorctl
是客戶端组哩。
在命令行輸入supervisord
即可運行服務端等龙,通常會加上-c
選項來指定配置文件目錄,服務端開啟后使用supervisorctl
控制客戶端伶贰,用法如下:
> status # 查看程序狀態(tài)
> stop ** # 關閉程序
> start ** # 啟動程序
> restart ** # 重啟程序
> reload # 重啟服務器
> update # 更新配置文件
四蛛砰、服務端配置
默認配置
安裝后會有個默認配置文件,位于/usr/local/python27/bin/
目錄下的echo_supervisord_conf
黍衙。
運行以重定向到默認的配置文件/etc/supervisord.conf
中:
/usr/local/python27/bin/echo_supervisord_conf >> /etc/supervisord.conf
配置說明
默認的配置為有很多泥畅,但是默認情況下需要用的很少,有一些需要我們?nèi)バ薷模?/p>
[unix_http_server]
# 這里是socket文件默認的目錄们豌,但是默認在tmp文件夾下
# 為了避免文件被刪除涯捻,我們可以修改一下目錄
;file=/tmp/supervisor.sock ; the path to the socket file
file=/var/run/supervisor.sock ; the path to the socket file
[supervisord]
# 日志文件目錄,默認也是在tmp目錄
logfile=/var/log/supervisor/supervisord.log ; main log file; default $CWD/supervisord.log
# pid文件目錄
;pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
pidfile=/var/run/supervisord.pid ; supervisord pidfile; default supervisord.pid
[supervisorctl]
# 這里要和上面的配置目錄一樣
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket