nginxtengine web服務(wù)器第三部分supervisor安裝_第1頁
nginxtengine web服務(wù)器第三部分supervisor安裝_第2頁
nginxtengine web服務(wù)器第三部分supervisor安裝_第3頁
nginxtengine web服務(wù)器第三部分supervisor安裝_第4頁
nginxtengine web服務(wù)器第三部分supervisor安裝_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、介紹Supervisor 是一個進程控制系統(tǒng). 它是一個 C/S 系統(tǒng)(注意: 其提供 WEB 接口給用戶查詢和控制), 它允許用戶去和控制在類 UNIX 系統(tǒng)的進程. 它的目標(biāo)與 launchd, daemontools 和 runit 有些相似, 但是與它們不一樣的是, 它不是作為init(進程號是1)運行. 它是被用來控制進程, 并且它在啟動的時候和一般程序并無二致.那么通俗點,它的作用是什么?你的 Nginx,Tomcat,memcache,Redis.會崩么,不會?好吧,那你自己寫的服務(wù)器監(jiān)測 呢?好吧,不要再糾結(jié)了,交給 Supervisor 吧,它會幫你 這些,即使它們不 崩了,

2、Supervisor 會幫你看住它們, 它們。安裝安裝方法很簡單。樓主的系統(tǒng)是 debian,其它系統(tǒng)就不說了aptitude -y install-setuptoolseasy-install supervisor 或者 pip install supervisor生成配置文件安裝好 supervisor 之后,默認是沒有生成配置文件的??梢酝ㄟ^以下命令生成配置文件echo_supervisord_conf /etc/supervisord.conf通常是把配置文件放到/etc/下面,當(dāng)然也可以放到任意路徑下面。啟動(以下啟動順序由上到下優(yōu)先級,依次遞減)supervisord#默認去找$C

3、WD/supervisord.conf,也就是當(dāng)前目錄supervisord#默認$CWD/etc/supervisord.conf,也就當(dāng)前目錄下的 etc 目錄supervisor 配置文件詳解supervisord/etc/supervisord.conf 的配置文件#默認去找supervisord -c /home/supervisord.conf件supervisor 組件#到指定路徑下去找配置文1.supervisordsupervisord 是 supervisor 的服務(wù)端程序。干的活:啟動 supervisor 程序自身,啟動 supervisor 管理的程,響應(yīng)來自cnts

4、 的請求,重啟閃退或異常退出的到日志文件中,生成和處理 Event程,把程的 stderr 或 stdout2.supervisorctl這東西還是有點用的,如果說 supervisord 是 supervisor 的服務(wù)端程序,那么supervisorctl 就是cnt 端程序了。supervisorctl 有一個類型s令行界面,running可以利用它來查看程狀態(tài),啟動/停止/重啟程,獲取程的列表等等。最牛的一點是,supervisorctl 不僅可以連接到本機上的 supervisord,還可以連接到的 supervisord,當(dāng)然在本機上面是通過 UNIX socket 連接的,是通過

5、 TCP socket 連接的。supervisorctl和 supervisord 之間的通信,是通過 xml_rpc 完成的。supervisorctl塊里面相應(yīng)的配置在3.Web ServerWeb Server 主要可以在界面上管理進程,Web Server 其實是通過 XML_RPC 來實現(xiàn)的,可以向 supervisor 請求數(shù)據(jù),也可以控制 supervisor 及inet_http_server塊里面程。配置在4.XML_RPC 接口這個就是調(diào)用的,上面的 supervisorctl 和 Web Server 就是它弄的配置文件詳解unix_http_serverfile=/t

6、mp/supervisor.sock; socket 文件的路徑,supervisorctl 用XML_RPC 和 supervisord 通信就是通過它進行的。如果不設(shè)置的話,supervisorctl 也就不能用了不設(shè)置的話,默認為 none。 非必須設(shè)置;od=0700;這個簡單,就是修改上面的那個 socket 文件的權(quán)限為 0700不設(shè)置的話,默認為 0700。 非必須設(shè)置;n=nobody:nogroup;這個一樣,修改上面的那個 socket 文件的屬組為 user.group不設(shè)置的話,默認為啟動 supervisord 進程的用戶及屬組。非必須設(shè)置;username=user

7、;使用 supervisorctl 連接的時候,認證的用戶不設(shè)置的話,默認為不需要用戶。 非必須設(shè)置;password=123碼,也可以使用 SHA 加密;和上面的用戶名對應(yīng)的,可以直接使用明如:SHA82ab876d1387bfafe46cc1c8a2ef074eae50cb1d默認不設(shè)置。非必須設(shè)置;inet_http_server的 supervisorctl 都要用到他; 偵聽在 TCP 上的 socket,Web Server 和不設(shè)置的話,默認為不開啟。非必須設(shè)置;port=:9001用 :9001 或*:9001。; 這個是偵聽的 IP 和端口,偵聽所有 IP這個必須設(shè)置,只要上

8、面的inet_http_server開啟了,就必須設(shè)置它;username=user必須設(shè)置; 這個和上面的 uinx_http_server 一個樣。非;password=123; 這個也一個樣。非必須設(shè)置supervisord程的一些參數(shù)的;這個主要是定義 supervisord 這個服務(wù)端進這個必須設(shè)置,不設(shè)置,supervisor 就不用干活了logfile=/tmp/supervisord.log ; 這個是 supervisord 這個主進程的日志路徑,注意進程的日志不搭嘎。默認路徑$CWD/supervisord.log,$CWD 是當(dāng)前目錄。非必須設(shè)置logfile_maxby

9、tes=50MB; 這個是上面那個日志文件的最大的大小,當(dāng)超過 50M 的時候,會生成一個新的日志文件。當(dāng)設(shè)置為 0 時,表示不限制文件大小默認值是 50M,非必須設(shè)置。logfile_backups=10; 日志文件保持的數(shù)量,supervisor 在啟動程序時,會自動創(chuàng)建 10 個 buckup 文件,用于 log roe當(dāng)設(shè)置為 0 時,表示不限制文件的數(shù)量。默認情況下為 10。非必須設(shè)置loglevel=infodebug, trace, or blather 等; 日志級別,有 critical, error, warn, info,默認為 info。非必須設(shè)置項file=/tmp/

10、supervisord.;supervisord 的文件路徑。默認為$CWD/supervisord.。非必須設(shè)置nodaemon=false行;如果是 true,supervisord 進程將臺運默認為 false,也就是以守護進程運行。非必須設(shè)置minfds=1024個值 supervisor 將不會啟動。;這個是最少系統(tǒng)空閑的文件描述符,低于這系統(tǒng)的文件描述符在這里設(shè)置 cat/proc/sys/fs/file-max默認情況下為 1024。非必須設(shè)置minprocs=200supervisor 也將不會正常啟動。;最小可用的進程描述符,低于這個值ulimit-u 這個命令,可以查看 l

11、inux 下面用戶的最大進程數(shù)默認為 200。非必須設(shè)置;umask=022; 進程創(chuàng)建文件的掩碼默認為 022。非必須設(shè)置項;user=chrism; 這個參數(shù)可以設(shè)置一個非 root 用戶,當(dāng)以 root 用戶啟動 supervisord 之后。我這里面設(shè)置的這個用戶,也可以對supervisord 進行管理默認情況是不設(shè)置。非必須設(shè)置項;identifier=supervisor給 XML_RPC 用的。當(dāng)你有多個; 這個參數(shù)是 supervisord 的標(biāo)識符,主要是supervisor 的時候,而且想調(diào)用 XML_RPC 統(tǒng)一管理,就需要為每個supervisor 設(shè)置不同的標(biāo)識符了

12、默認是 supervisord。非必需設(shè)置;directory=/tmp; 這個參數(shù)是當(dāng) supervisord 作為守護進程運行的時候,設(shè)置這個參數(shù)的話,啟動supervisord 進程之前,會先切換到這個目錄默認不設(shè)置。非必須設(shè)置;nocleanup=true; 這個參數(shù)當(dāng)為 false 的時候,會在supervisord 進程啟動的時候,把以前程產(chǎn)生的日志文件(路徑為 AUTO 的情況下)清除掉。有時候咱們想要看歷史日志,當(dāng)然不想日志被清除了。所以可以設(shè)置為 true默認是 false,有調(diào)試需求的同學(xué)可以設(shè)置為 true。非必須設(shè)置;childlogdir=/tmp志文件的存放路徑。;

13、進程日志路徑為 AUTO 的時候程日默認路徑是這個東西,執(zhí)行下面的這個命令看看就 OK 了,處理的東西就默認路徑-c import tempfile;prtempfile.gettempdir()非必須設(shè)置;environment=KEY=value; 這個是用來設(shè)置環(huán)境變量的,supervisord在 linux 中啟動默認繼承了 linux 的環(huán)境變量,在這里可以設(shè)置 supervisord 進程特有的其他環(huán)境變量。supervisord 啟動程時,父進程的內(nèi)存空間內(nèi)容。 所以設(shè)置的程會拷貝這些環(huán)境變量也會被程繼承。小例子:environment=name=haha,age=hehe默認為

14、不設(shè)置。非必須設(shè)置;strip_ansi=false志中的所有 ANSI 序列。; 這個選項如果設(shè)置為 true,會清除 ANSI程日序列呢?就是的n,t 這些東西。默認為 false。非必須設(shè)置;the below section mustremainhe config file for RPC;(supervisorctl/weberface) to work, additionalerfamay be;added by defining them in separatcerface: sectionsrpcerfaupervisor;這個選項是給 XML_RPC 用的,當(dāng)然你如果想使用

15、supervisord 或者 web server 這個選項必須要開啟的supervisor.rpc supervisor.rpcerface_factory = erface:make_main_rpcerfacesupervisorctl;這個主要是針對 supervisorctl 的一些配置serverurix:/tmp/supervisor.sock ; 這個是 supervisorctl 本地連接supervisord 的時候,本地 UNIX socket路徑,注意這個是和前面的unix_http_server對應(yīng)的默認值就是unix:/tmp/supervisor.sock。非必須

16、設(shè)置;serverurl=; 這個是 supervisorctl連接supervisord 的時候,用到的 TCP socket 路徑注意這個和前面的inet_http_server對應(yīng)默認就是。非必須項;username=chris; 用戶名默認空。非必須設(shè)置;password=123;默認空。非必須設(shè)置;prompt=mysupervisor; 輸入用戶名時候的提示符默認 supervisor。非必須設(shè)置;history_file=/.sc_history ; 這個參數(shù)和s中的 history 類似,可以用上下鍵來查找前面執(zhí)行過令默認是 no file 的。所以想要有這種功能,必須指定一個

17、文件。非必須設(shè)置; The below sle program section shows allsible program subsection values,; create one or more real program: sections to be able to control them under; supervisor.;program:theprogramname;這個就是咱們要管理的程了,:后面的是名字,最好別亂寫和實際進程有點關(guān)聯(lián)最好。這樣的 program可以設(shè)置一個或多個,一個 program 就是要被管理的一個進程;d=/bin/cat; 這個就是的要啟動進程令路

18、徑了,可以帶參數(shù)例子:/home/test.py -a hehe有一點需要注意的是的d 只能是那種在終端運行的進程,不能是守護進程。這個想想也知道了,比如說d=service httpd start。httpd 這個進程被 linux 的 service 管理了,的 supervisor 再去啟動這個命令這已經(jīng)不是嚴格意義的程了。這個是個必須設(shè)置的項;pros_name=%(program_name)s ; 這個是進程名,如果下面的 numprocs參數(shù)為 1 的話,就不用管這個參數(shù)了,它默認值%(program_name)s 也就是上面的那個 program 冒號后面的名字,但是如果 num

19、procs 為多個的話,那就不能這么干了。想想也知道,不可能每個進程都用同一個進程名吧。;numprocs=1; 啟動進程的數(shù)目。當(dāng)不為 1 時,就是進程池的概念,注意 pros_name 的設(shè)置默認為 1。非必須設(shè)置;directory=/tmp; 進程運行前,會前切換到這個目錄默認不設(shè)置。非必須設(shè)置;umask=022; 進程掩碼,默認 none,非必須;priority=999;程啟動關(guān)閉優(yōu)先級,優(yōu)先級低的,最先啟動,關(guān)閉的時候最后關(guān)閉默認值為 999 。非必須設(shè)置;autostart=true; 如果是 true 的話,程將在supervisord 啟動后被自動啟動默認就是 true。

20、非必須設(shè)置;autorestart=unexpected; 這個是設(shè)置程掛掉后自動重啟的情況,有三個選項,false,unexpected和 true。如果為 false 的時候,無論什么情況下,都不會被重新啟動,如果為 unexpected,只有當(dāng)進程的退出碼不在下面的 exitcodes 里面定義的退出碼的時候,才會被自動重啟。當(dāng)為 true的時候,只要程掛掉,將會被無條件的重啟;startsecs=1; 這個選項是程啟動多少秒之后,此時狀態(tài)如果是 running,則認為啟動成功了默認值為 1 。非必須設(shè)置;startretries=3; 當(dāng)進程啟動失敗后,最大嘗試啟動的次數(shù)。當(dāng)超過 3

21、次后,supervisor 將把此進程的狀態(tài)置為 FAIL默認值為 3 。非必須設(shè)置;exitcodes=0,2; 注意和上面的的autorestart=unexpected 對應(yīng)。exitcodes 里面的定義的退出碼是 expected 的。;stopsignal=QUIT; 進程停止信號,可以為 TERM, HUP,QUIT, KILL, USR1, or USR2 等信號默認為 TERM 。當(dāng)用設(shè)定的信號去干掉進程,退出碼會被認為是 expected非必須設(shè)置;stopwaitsecs=10; 這個是當(dāng)向程發(fā)送 stopsignal信號后,到系統(tǒng)返回信息給 supervisord,所等

22、待的最大時間。 超過這個時間,supervisord 會向該程發(fā)送一個強制 kill 的信號。默認為 10 秒。非必須設(shè)置;stopasgroup=false; 這個東西主要用于,supervisord 管理的程,這個程本身還有程。那么程如果僅僅干掉supervisord 的程的話,程的有可能會變成孤兒進程。所以咱們可以設(shè)置可個選項,把整個該程的整個進程組都干掉。 設(shè)置為 true 的話,一般 killasgroup 也會被設(shè)置為 true。需要注意的是,該選項發(fā)送的是 stop 信號默認為 false。非必須設(shè)置。;killasgroup=false送的是 kill 信號;這個和上面的 st

23、opasgroup 類似,不過發(fā);user=chrism里設(shè)置這個非 root 用戶,可以用來;如果 supervisord 是 root 啟動在這管理該 program默認不設(shè)置。非必須設(shè)置項;redirect_stderr=true stdout 日志文件中;如果為 true,則 stderr 的日志會被寫入默認為 false,非必須設(shè)置;stdout_logfile=/a/path徑,AUTO,none 等三個選項。;程的 stdout 的日志路徑,可以指定路設(shè)置為 none 的話,將沒有日志產(chǎn)生。設(shè)置為 AUTO 的話,將隨機找一個地方生成日志文件,而且當(dāng) supervisord 重新

24、啟動的時候,以前的日志文件會被清空。當(dāng) redirect_stderr=true 的時候,sterr 也會寫進這個日志文件;stdout_logfile_maxbytes=1MB義的一樣。默認為 50;日志文件最大大小,和supervisord中定;stdout_logfile_backups=10;和supervisord定義的一樣。默認 10;stdout_capture_maxbytes=1MB;這個東西是設(shè)定 capture 管道的大小,當(dāng)值不為 0 的時候,程可以從 stdout發(fā)送信息,而 supervisor 可以根據(jù)信息,發(fā)送相應(yīng)的 event。默認為 0,為 0 的時候表達關(guān)

25、閉管道。非必須項;stdout_events_enabled=false; 當(dāng)設(shè)置為 ture 的時候向文件描述符中寫日志的時候,將進程由 stdout觸發(fā) supervisord 發(fā)送PROS_LOG_STDOUT 類型的 event默認為 false。非必須設(shè)置;stderr_logfile=/a/path; 這個東西是設(shè)置 stderr 寫的日志路徑,當(dāng)redirect_stderr=true。這個就不用設(shè)置了,設(shè)置了也是白搭。因為它會被寫入 stdout_logfile 的同一個文件中默認為 AUTO,也就是隨便找個地存, supervisord 重啟被清空。非必須設(shè)置;stderr_

26、logfile_maxbytes=1MB;這個出現(xiàn)好幾次了,就不重復(fù)了;stderr_logfile_backups=10;這個也是;stderr_capture_maxbytes=1MB認為 0,關(guān)閉狀態(tài);這個一樣,和 stdout_capture 一樣。 默;stderr_events_enabled=false;這個也是一樣,默認為 false;environment=A=1,B=2程是不共享的;這個是該程的環(huán)境變量,和別的;serverurl=AUTO;The below sle eventlistener section shows allsible;eventlistenersub

27、section values, create one or more real;eventlistener: sections to be able to handle event notifications;sent by supervisor.;eventlistener:theeventlistenername ;這個東西其實和 program 的地位是一樣的,也是 suopervisor 啟動的程,不過它干的活是訂閱supervisord 發(fā)送的 event。他的名字就叫l(wèi)istener 了可以在 listener里面做一系列處理,比如等等樓主這兩天干的活,就是弄的這玩意;d=/bin

28、/eventlistener; 這個和上面的 program 一樣,表示listener 的可執(zhí)行文件的路徑;pros_name=%(program_name)s ; 這個也一樣,進程名,當(dāng)下面的 numprocs為多個的時候,才需要。否則默認就OK 了;numprocs=1;相同的 listener 啟動的個數(shù);events=EVENT這個地方的事件類型。才會被發(fā)送;event 事件的類型,也就是說,只有寫在;buffer_size=10;這個是 event 隊列緩存大小,不太清楚,樓主猜測應(yīng)該是個吧。當(dāng) buffer超過10 的時候,最舊的event 將會被清除,并把新的 event 放進

29、去。默認值為 10。非必須選項;directory=/tmp;進程執(zhí)行前,會切換到這個目錄下執(zhí)行默認為不切換。非必須;umask=022;淹沒,默認為 none,不說了;priority=-1;啟動優(yōu)先級,默認-1,也不扯了;autostart=true true;是否隨 supervisord 啟動一起啟動,默認;autorestart=unexpected true,false,unexpected 等,注意;是否自動重啟,和 program 一個樣,分unexpected 和 exitcodes 的關(guān)系;startsecs=1認定為成功啟動,默認 1;也是一樣,進程啟動后跑了幾秒鐘,才被

30、;startretries=3;失敗最大嘗試次數(shù),默認 3;exitcodes=0,2;期望或者說預(yù)料中的進程退出碼,;stopsignal=QUIT;干掉進程的信號,默認為 TERM,比如設(shè)置為 QUIT,那么如果 QUIT 來干這個進程那么會被認為是正常,退出碼也被認為是 expected 中的;stopwaitsecs=10 10); max num secs to wait b4 SIGKILL (default;stopasgroup=false group (default false); send stop signal to the UNIX pros;killasgroup=

31、false false); SIGKILL the UNIX pros group (def;user=chrism進程。;設(shè)置普通用戶,可以用來管理該 listener默認為空。非必須設(shè)置;redirect_stderr=true的 log 里面; 為 true 的話,stderr 的 log 會并入 stdout默認為 false。非必須設(shè)置;stdout_logfile=/a/path;這個不說了,好幾遍了;stdout_logfile_maxbytes=1MB;這個也是;stdout_logfile_backups=10;這個也是;stdout_events_enabled=false event;這個其實是錯的,listener 是不能發(fā)送;stderr_lo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論