第一篇:開搞supervisors!

python每日一記: 學(xué)習(xí)使用supervisor

?

介紹

Supervisor 是基于 Python 的進(jìn)程管理工具昌抠,只能運(yùn)行在 Unix-Like 的系統(tǒng)上患朱,也就是無法運(yùn)行在 Windows 上。Supervisor 官方版目前只能運(yùn)行在 Python 2.4 以上版本炊苫,
但是還無法運(yùn)行在 Python 3 上裁厅,不過已經(jīng)有一個 Python 3 的移植版 supervisor-py3k冰沙。

?
Supervisor 有兩個主要的組成部分:

  • supervisord,運(yùn)行 Supervisor 時會啟動一個進(jìn)程 supervisord执虹,它負(fù)責(zé)啟動所管理的進(jìn)程拓挥,并將所管理的進(jìn)程作為自己的子進(jìn)程來啟動,而且可以在所管理的進(jìn)程出現(xiàn)崩潰時自動重啟袋励。

  • supervisorctl侥啤,是命令行管理工具,可以用來執(zhí)行 stop茬故、start盖灸、restart 等命令,來對這些子進(jìn)程進(jìn)行管理磺芭。
    ?
    ?

安裝supervisor

  • pip安裝

  • pip為python-pip2.7

      sudo pip install supervisor
    
  • apt安裝

      apt-get install supervisor  
    

創(chuàng)建配置文件

?

  • 執(zhí)行命令:

          echo_supervisord_conf > /etc/supervisord.conf
    

如果遇到 報(bào)錯 permission denied: /etc/supervisord.conf

    sudo su - root -c "echo_supervisord_conf > /etc/supervisord.conf"

配置文件說明

想要了解怎么配置需要管理的進(jìn)程赁炎,只要打開 supervisord.conf 就可以了,里面有很詳細(xì)的注釋信息钾腺。

  • 打開配置文件
vim /etc/supervisord.conf

默認(rèn)的配置文件是下面這樣的徙垫,但是這里有個坑需要注意,supervisord.pid 以及 supervisor.sock
是放在 /tmp 目錄下放棒,但是 /tmp 目錄是存放臨時文件松邪,里面的文件是會被 Linux 系統(tǒng)刪除的,一旦這些文件丟失哨查,
就無法再通過 supervisorctl 來執(zhí)行 restart 和 stop 命令了逗抑,會提醒unix:///tmp/supervisor.sock 不存在的錯誤

    [unix_http_server]
    ;file=/tmp/supervisor.sock   ; (the path to the socket file)
    ;修改為 /var/run 目錄寒亥,避免被系統(tǒng)刪除
    file=/var/run/supervisor.sock   ; (the path to the socket file)
    ...
  • web管理
    ?

    supervsior服務(wù)是有web管理界面的邮府,可以對服務(wù)可視化,看到服務(wù)的狀態(tài)溉奕,同時可以控制服務(wù)褂傀,
    不過默認(rèn)是關(guān)閉的,因?yàn)槿绻麑⑺蟹?wù)暴露給壞人加勤,這肯定是運(yùn)維的噩夢仙辟。
    所以你還是選擇開web節(jié)目,記做贰叠国!記住戴尸!記姿诤浮! 防火墻,改端口项棠,加認(rèn)證悲雳。

web界面.png
[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for ;all iface)
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))
...

同理:

在[supervisord]中,是配置supervisor的日志香追,盡量將/tmp合瓢,改為/var/log下

    [supervisord]
    ;logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
    ;修改為 /var/log 目錄,避免被系統(tǒng)刪除
    logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
    logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
    logfile_backups=10           ; (num of main logfile rotation backups;default 10)
    loglevel=info                ; (log level;default info; others: debug,warn,trace)
    ;pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
    ;修改為 /var/run 目錄透典,避免被系統(tǒng)刪除
    pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
    ...
    ;設(shè)置啟動supervisord的用戶歪玲,一般情況下不要輕易用root用戶來啟動,除非你真的確定要這么做
    ;user=chrism                 ; (default is current user, required if root)
    ...

默認(rèn)情況下掷匠,進(jìn)程的日志文件達(dá)到50MB時,將進(jìn)行分割岖圈,最多保留10個文件讹语,當(dāng)然這些配置也可以對每個進(jìn)程單獨(dú)配置。

  • 這部分需要跟[unix_http_server]蜂科、[inet_http_server]內(nèi)容匹配哦顽决,內(nèi)容大致相同;
[supervisorctl]
; 必須和'unix_http_server'里面的設(shè)定匹配
;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
;修改為 /var/run 目錄导匣,避免被系統(tǒng)刪除
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set

權(quán)限問題

設(shè)置好配置文件后才菠,應(yīng)先創(chuàng)建上述配置文件中新增的文件夾。如果指定了啟動用戶 user贡定,
這里以 star為例赋访,那么應(yīng)注意相關(guān)文件的權(quán)限問題,包括日志文件缓待,否則會出現(xiàn)沒有權(quán)限的錯誤蚓耽。
例如設(shè)置了啟動用戶 star,然后啟動 supervisord 出現(xiàn)錯誤

Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13) 

就是由于上面的配置文件中 /var/run 文件夾旋炒,沒有授予啟動 supervisord 的用戶 oxygen 的寫權(quán)限步悠。
/var/run 文件夾實(shí)際上是鏈接到 /run,因此我們修改 /run 的權(quán)限瘫镇。

sudo chmod 777 /run 
sudo chmod 777 /var/log

這樣有點(diǎn)簡單粗暴鼎兽,也可以考慮把上述配置文件中 .sock,.pid 等文件修改到其他文件夾中铣除,
并確保有相應(yīng)的權(quán)限即可谚咬。一般情況下,我們可以用 root 用戶啟動 supervisord 進(jìn)程尚粘,然后在其所管理的進(jìn)程中序宦,
再具體指定需要以那個用戶啟動這些進(jìn)程。
如nginx 啟動的屬主為 nginx. nginx

使用 include

在配置文件的最后,有一個 [include] 的配置項(xiàng)互捌,跟 Nginx 一樣潘明,可以 include 某個文件夾下的所有配置文件,這樣我們就可以為每個進(jìn)程或相關(guān)的幾個進(jìn)程的配置單獨(dú)寫成一個文件秕噪。

12 [include]files = /etc/supervisord.d/*.ini
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钳降,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子腌巾,更是在濱河造成了極大的恐慌遂填,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澈蝙,死亡現(xiàn)場離奇詭異吓坚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)灯荧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門礁击,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逗载,你說我怎么就攤上這事哆窿。” “怎么了厉斟?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵挚躯,是天一觀的道長。 經(jīng)常有香客問我擦秽,道長码荔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任感挥,我火速辦了婚禮目胡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘链快。我一直安慰自己誉己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布域蜗。 她就那樣靜靜地躺著巨双,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霉祸。 梳的紋絲不亂的頭發(fā)上筑累,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音丝蹭,去河邊找鬼慢宗。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的镜沽。 我是一名探鬼主播敏晤,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缅茉!你這毒婦竟也來了嘴脾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蔬墩,失蹤者是張志新(化名)和其女友劉穎译打,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拇颅,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奏司,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了樟插。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片韵洋。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岸夯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情们妥,我是刑警寧澤猜扮,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站监婶,受9級特大地震影響旅赢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惑惶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一煮盼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧带污,春花似錦僵控、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至千绪,卻和暖如春充易,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荸型。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工盹靴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓稿静,卻偏偏與公主長得像梭冠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子自赔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容