使用supervisor管理進程
原文連接:使用supervisor管理進程
一、摘要
supervisor是一個進程管理工具,剛工作就接觸到了,不過當時因為被腳本封裝好了,所以都是直接用,對它的理解也僅僅是知道了有這么一個東西, 想著有機會了再深入了解。
一早因為機緣巧合要把oss掛載到主機,掛載的時候要用到supervisor,本來打算按照教程先搞一個,沒想到中途遇到麻煩,走不下去了。沒辦法,只能先停下來好好鉆研一下了,反正以后也要用到,于是就開始了一天的supervisor之旅。
supervisor是一個用python寫的進程管理工具,可以很方便的用來啟動、重啟、關閉進程。除了對單個進程的控制,還可以同時啟動、關閉多個進程,比如很不幸的服務器出問題導致所有應用程序都被殺死,此時可以用 supervisor 同時啟動所有應用程序而不是一個一個地敲命令啟動。
二、安裝方法
安裝有兩種方式:
一種是直接使用yum命令安裝,這種安裝的好處是安裝后不用設置鏈接,直接就能使用命令。
yum install supervisor
第二種是使用python的pip
工具安裝,然后手動創建軟鏈接:
pip install supervisor
# 安裝后程序的二進制文件會存在python安裝目錄下的bin目錄
cd /usr/local/python27/bin
# 創建軟鏈接
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 # 查看程序狀態
> 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
配置說明
默認的配置為有很多,但是默認情況下需要用的很少,有一些需要我們去修改:
[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