linux下supervisor守護uwsgi程序

2021-10-07 08:25:16 字數 2918 閱讀 2946

傳統的管理uwsgi服務:

1. 通過shell指令碼來編寫start restart stop函式來控制

2. 比較麻煩,有時候控制寫的爛,還會出現意想不到的錯誤

supervisor進行管理

1. 可以批量管理多個uwsgi服務;

2. shell指令碼,nginx訪問,mysql等都能進行管理

3. 每個服務進行隔離,通過supervisorctl進行管理單個服務

4. supervisorctl對每個管理的服務進行restart start stop操作

5. 簡化了寫shell的煩惱

uwsgi配置:

[root@linux-node01 ~]# cat  /data/web/plantool/plt_uwsgi.ini 

[uwsgi]

socket=127.0.0.1:8011 # socket是ip:port模式

chdir=/data/web/plantool # django專案目錄

vacuum=true

master=true

workers=4 # 開啟的主程序個數

enable-threads=true

threads=10 # 開啟的執行緒個數

pidfile=/var/run/uwsgi8011.pid # uwsgi pid檔案

#daemonize=/var/log/uwsgi8011.log # 守護程序一定要注釋掉(關鍵)

memory-report=true

[root@linux-node01 ~]#

安裝supervisor:

yum install supervisor
配置,主要是開啟子配置:

[include]

files = /etc/supervisor/conf.d/*.ini

子配置內容:

[program:plantool]

command =/usr/local/bin/uwsgi /data/web/plantool/plt_uwsgi.ini ; 啟動命令,可以看出與手動在命令列啟動的命令是一樣的

autostart = true ; 在 supervisord 啟動的時候也自動啟動

stopsignal=quit

user=root

startsecs = 5 ; 啟動 5 秒後沒有異常退出,就當作已經正常啟動了

startretries = 3 ; 啟動失敗自動重試次數,預設是 3

autorestart = true ; 程式異常退出後自動重啟

redirect_stderr = true ; 把 stderr 重定向到 stdout,預設 false

stdout_logfile_maxbytes = 20mb ; stdout 日誌檔案大小,預設 50mb

stdout_logfile = /data/log/plantool_stdout.log

stderr_logfile = /data/log/plantool_err.log

檢查執行狀態:

[root@linux-node01 conf.d]# supervisorctl reload

restarted supervisord

[root@linux-node01 conf.d]# supervisorctl status

plantool running pid 31682, uptime 0:07:53

[root@linux-node01 conf.d]# netstat -lnpt |grep 8011

tcp 0 0 127.0.0.1:8011 0.0.0.0:* listen 31682/uwsgi

[root@linux-node01 conf.d]# ps -aux |grep plant

warning: bad syntax, perhaps a bogus '-'? see /usr/share/doc/procps-3.2.8/faq

root 345 0.0 0.0 103264 880 pts/0 s+ 20:31 0:00 grep plant

root 31682 0.0 0.3 263572 28272 ? s 20:23 0:00 /usr/local/bin/uwsgi /data/web/plantool/plt_uwsgi.ini

root 31685 0.0 0.3 945848 25780 ? sl 20:23 0:00 /usr/local/bin/uwsgi /data/web/plantool/plt_uwsgi.ini

root 31686 0.0 0.3 945848 25776 ? sl 20:23 0:00 /usr/local/bin/uwsgi /data/web/plantool/plt_uwsgi.ini

root 31687 0.0 0.3 945848 25772 ? sl 20:23 0:00 /usr/local/bin/uwsgi /data/web/plantool/plt_uwsgi.ini

root 31688 0.0 0.3 945848 25768 ? sl 20:23 0:00 /usr/local/bin/uwsgi /data/web/plantool/plt_uwsgi.ini

[root@linux-node01 conf.d]#

Linux守護程序工具Supervisor

程序 process 是指正在執行的程式 是程式正在執行的乙個例項。它由程式指令,和從檔案 其它程式中讀取的資料或系統使用者的輸入組成。在linux中程序主要分為兩類,互動式程序和非互動式程序,而守護程序就是一種非互動式程序,它們在系統啟動時啟動,並作為服務執行。linux的後台程序執行有好幾種方法...

linux安裝 配置 使用supervisor

一 supervisor作用 實現每台機器上多個程序的簡單高效中心化管理,實現機器啟動時應用程序隨之啟動的目標。二 supervisor安裝 1.安裝easy install yum install python setuptools devel 2.安裝 supervisor easy insta...

Linux 程序管理工具 supervisor

linux 程序管理工具 supervisor supervisor簡介 在linux伺服器中,有時候我們需要乙個程序需要可靠的在後台執行,並且能夠監控程序狀態,在意外結束時能夠自動重啟等。此時就可以使用supervisor。supervisor 是使用python開發的一套通用的程序管理程式,能夠...