supervisor是什么
Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.
supervisor是用Python實現(xiàn)的一款非常實用的進程管理工具衷笋。supervisord會幫你把管理的應(yīng)用程序轉(zhuǎn)成daemon程序喻粹,而且可以方便的通過命令開啟、關(guān)閉、重啟等操作,而且它管理的進程一旦崩潰會自動重啟,這樣就可以保證程序執(zhí)行中斷后的情況下有自我修復(fù)的功能。
supervisor安裝
mac: brew install supervisor
centos:sudo pip install supervisor
ubuntu:sudo apt-get install supervisor
supervisord配置
使用echo_supervisord_conf查看默認(rèn)配置
使用echo_supervisord_conf > /etc/supervisord.conf命令將配置文件保存在xx下面适滓,然后修改配置文件。
推薦的方式是將最后一行修改到某個固定文件夾恋追,如下:
[include]
files = /etc/supervisord.d/*.ini
# 這樣每次運行都會加載此目錄下的配置文件凭迹,每個文件單獨管理一個進程。而*.ini的內(nèi)容一般如下:
配置1
[program:server1]
command=python -m server1 # 執(zhí)行的命令
directory=/home/me/bin # 執(zhí)行命令的路徑
user=uncle # 執(zhí)行命令的用戶
autorestart=true # 出錯后自動重啟
redirect_stderr=true # 錯誤日志重定向
stdout_logfile=/home/uncle/log/server1.log # 日志的路徑
loglevel=info # 日志的級別
配置2
[program:server2]
command=php server2
directory=/home/me/bin
user=uncle
supervisord啟動
supervisord -c supervisord.conf # 指定配置文件啟動supervisord
supervisordctl # 啟動spuervisordctl
service supervisord restart # 重啟supervisord服務(wù)
$supervisorctl shutdown # 關(guān)閉服務(wù)
$supervisorctl reload # 重新載入配置
另外在啟動時遇到了比較詭異的錯誤:
$ sudo service supervisord start
Starting supervisord: Traceback (most recent call last):
File "/usr/bin/supervisord", line 2, in <module>
from supervisor.supervisord import main
ImportError: No module named supervisor.supervisord
具體是Python版本問題苦囱,在一篇日本博客中有相應(yīng)答案:
墻外博客地址: AmazonLinuxでsupervisorをyumインストールする
ps:不要問我為什么能看懂日文嗅绸,如果你用心,也是可以的~