supervisor管理後臺進程
在linux中supervisor是用來管理後臺進程的,是一個用python寫的進程管理工具,可以讓宕機的進程重啟。這裏我們大概講一下用他來管理uWSGI。
一.安裝supervisor
1.python2下的安裝
supervisor不支持python3,所以你安裝可以使用自帶的python2安裝,但是自帶的python2沒有安裝pip
(1)要安裝pip,首先要安裝setuptools
wget https://pypi.python.org/packages/ff/d4/209f4939c49e31f5524fa0027bf1c8ec3107abaf7c61fdaad704a648c281/setuptools-21.0.0.tar.gz#md5=81964fdb89534118707742e6d1a1ddb4 tar xvf setuptools-21.0.0.tar.gz //解壓文件 cd setuptools-21.0.0 python setup.py install
(2)安裝pip
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz
tar xvf pip-9.0.1.tar.gz
cd pip-9.0.1
python setup.py install
(3)安裝supervisor
pip install supervisor
2.python3下的安裝
默認的pip安裝的只支持python2,當然手動安裝新版就支持python3了
pip install git+https://github.com/Supervisor/supervisor
二.配置supervisor
生成 supervisor 默認配置文件,放在 /etc/supervisord.conf 路徑中:
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件
# 修改配置文件
vi /etc/supervisord.conf
# 加入以下配置信息在最下面
[include]
files = /etc/supervisord.d/*.conf # /etc/supervisord.d/下所有conf結尾的
[inet_http_server]
port=9001 # 端口號
username=user # web登錄名
password=123 # 登錄密碼
配置文件詳情
1 [unix_http_server] 2 file=/tmp/supervisor.sock ; UNIX socket 文件,supervisorctl 會使用 3 ;chmod=0700 ; socket 文件的 mode,默認是 0700 4 ;chown=nobody:nogroup ; socket 文件的 owner,格式: uid:gid 5 ;username=user ; default is no username (open server) 6 ;password=123 ; default is no password (open server) 7 8 ;[inet_http_server] ; HTTP 服務器,提供 web 管理界面 9 ;port=127.0.0.1:9001 ; Web 管理後臺運行的 IP 和端口,如果開放到公網,需要註意安全性 10 ;username=user ; 登錄管理後臺的用戶名 11 ;password=123 ; 登錄管理後臺的密碼 12 13 [supervisord] 14 logfile=/tmp/supervisord.log ; 日誌文件,默認是 $CWD/supervisord.log 15 logfile_maxbytes=50MB ; 日誌文件大小,超出會 rotate,默認 50MB 16 logfile_backups=10 ; 日誌文件保留備份數量默認 10 17 loglevel=info ; 日誌級別,默認 info,其它: debug,warn,trace 18 pidfile=/tmp/supervisord.pid ; pid 文件 19 nodaemon=false ; 是否在前臺啟動,默認是 false,即以 daemon 的方式啟動 20 minfds=1024 ; 可以打開的文件描述符的最小值,默認 1024 21 minprocs=200 ; 可以打開的進程數的最小值,默認 200 22 23 ; the below section must remain in the config file for RPC 24 ; (supervisorctl/web interface) to work, additional interfaces may be 25 ; added by defining them in separate rpcinterface: sections 26 [rpcinterface:supervisor] 27 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 28 29 [supervisorctl] 30 serverurl=unix:///tmp/supervisor.sock ; 通過 UNIX socket 連接 supervisord,路徑與 unix_http_server 部分的 file 一致 31 ;serverurl=http://127.0.0.1:9001 ; 通過 HTTP 的方式連接 supervisord 32 33 ;包含其他的配置文件 34 [include] 35 files = relative/directory/*.ini ; 可以是 *.conf 或 *.iniView Code
啟動supervisor
supervisord -c /etc/supervisord.conf
再啟動的時候可能會報錯,Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord。
解決的是方式:
unlink /tmp/supervisor.sock
通過http://ip:9001/訪問web界面,賬戶名密碼就是你配置的,效果如下
三.加入監控程序
新建管理的監控文件夾,每個程序設置配置文件,達到隔離的效果
mkdir /etc/supervisord.d/
在/etc/supervisor.d/目錄下面加入需要管理的程序
vi /etc/supervisor.d/orange_web.conf # 新建一個管理程序
# 程序的名字,在supervisor中可以用這個名字來管理該程序,隨便起
[program:orange_web]
# 指定運行用戶
user = root
# 啟動程序的命令uwsgi啟動命令
command = uwsgi --ini /var/www/script/uwsgi.ini
# 項目的目錄
directory = /var/www/orange_web
# 開始的時候等待多少秒
startsecs = 0
# 停止的時候等待多少秒
stopwaitsecs = 0
# 設置改程序是否雖supervisor的啟動而啟動
autorstart = true
# 程序掛了是否需要重新將其啟動
autorestart = true
# 是否將程序錯誤信息重定向到文件
redirect_stderr=true
# 輸出的log文件位置
stdout_logfile = /var/www/script/supervisord.log
# 輸出的錯誤文件位置
stderr_logfile = /var/www/script/supervisord.err
[supervisord]
# log的級別
loglevel = info
重新啟動supervisord
supervisorctl reload # 重啟
重新訪問supervisor管理界面
在這裏就安裝配置成功了,哈哈哈就可以去跟周圍的女同學裝逼了。。
四.supervisor常用命令
supervisorctl start programXX # 啟動進程programXX
supervisorctl stop programXX # 停止進程programXX
supervisorctl restart programXX # 重啟進程programXX
supervisorctl stop groupworker # 停止所有名為groupworker這個分組的進程(start,restart都可用)
supervisorctl stop all # 停止所有進程(start,restart都可用,但是都不會載入最新的配置文件)
supervisorctl reload # 載入最新的配置文件,重載進程
參考鏈接:
supervisor https://www.centos.bz/2018/05/%E4%BD%BF%E7%94%A8-supervisor-%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8E%E5%8F%B0%E8%BF%9B%E7%A8%8B/
Django+uWSGI+Nginx部署 https://www.cnblogs.com/zzqit/p/10103303.html
https://www.jianshu.com/p/23762bd086e1
supervisor管理後臺進程