CentOS7安裝supervisor

來源:互聯網
上載者:User

supervisord 是Linux/Unix系統下的一個進程管理工具 

一、安裝

sudo yum install supervisor

二、設定開機

sudo systemctl enable supervisord.service

三、設定檔相關

supervisord 的設定檔是 /etc/supervisord.conf 

自訂設定檔目錄是/etc/supervisord.d,該目錄下檔案以.ini為尾碼

四、supervisord 命令

1、啟動

sudo systemctl start supervisord.service

2、關閉

sudo systemctl stop supervisord.service

3、重啟

sudo systemctl restart supervisord.service

五、配置進程舉例

舉例1:例如有個nginx 進程需要supervisor來進行管理,可以設定檔案nginx.ini

vim  /etc/supervisord.d/nginx.ini

內容如下

[program:nginx]

;directory = /www/lanmps/bin ; 程式的啟動目錄,也是工作目錄或者說可執行程式所在目錄

command =/www/lanmps/bin/nginx start ; 啟動命令,可以看出與手動在命令列啟動的命令是一樣的autostart =true; 在 supervisord 啟動的時候也自動啟動

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

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

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

user =www ; 用哪個使用者啟動

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

stdout_logfile_maxbytes =20MB ; stdout 記錄檔大小,預設50MB

stdout_logfile_backups =20; stdout 記錄檔備份數

; stdout 記錄檔,需要注意當指定目錄不存在時無法正常啟動,所以需要手動建立目錄(supervisord 會自動建立記錄檔)

stdout_logfile =/www/logs/usercenter_stdout.log

stopasgroup=false;預設為false,進程被殺死時,是否向這個進程組發送stop訊號,包括子進程killasgroup=false;預設為false,向進程組發送kill訊號,包括子進程

; 可以通過 environment 來添加需要的環境變數,一種常見的用法是修改 PYTHONPATH

; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere

舉例2:例如有個用golang編寫的程式weatherserver需要supervisor來進行管理,可以設定檔案weatherserver.ini

vim  /etc/supervisord.d/weatherserver.ini

內容如下

[program:weatherserver]

directory=/home/lizh/goworkspace/src/weather    ;設定程式所在目錄路徑

command=/home/lizh/goworkspace/src/weather/weatherserver ;啟動程式的命令   

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

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

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

; stdout 記錄檔,需要注意當指定目錄不存在時無法正常啟動,所以需要手動建立目錄(supervisord 會自動建立記錄檔)

stdout_logfile=/home/lizh/log/weather_server.log

stdout_logfile_maxbytes=10MB  ; stdout 記錄檔大小,預設50MB

stdout_logfile_backups=10  ; stdout 記錄檔備份數,預設是10

stdout_capture_maxbytes=1MB

stderr_logfile=/home/lizh/log/weather_server_error.log ;錯誤記錄檔資訊

stderr_logfile_maxbytes=10MB

stderr_logfile_backups=10

stderr_capture_maxbytes=1MB

六、supervisord 用戶端管理命令

1、supervisorctl status# 查看狀態

2、supervisorctl stop nginx #關閉nginx  這裡的nginx即為:nginx.ini設定檔裡面的program:nginx

3、supervisorctl start nginx#啟動nginx

4、supervisorctl restart nginx#重啟nginx

5、supervisorctl reread

6、supervisorctl update#更新新的配置

七、其他

1、supervisord:supervisor服務的守護進程 

2、supervisorctl:supervisor命令列用戶端 

3、Web Server:supervisor提供了與supervisorctl功能相當的WEB操作介面 

4、XML-RPC Interface:XML-RPC介面

八、設定檔說明

設定檔/etc/supervisord.conf

[unix_http_server]

file=/tmp/supervisor.sock  ;UNIX socket 檔案,supervisorctl 會使用

;chmod=0700                ;socket檔案的mode,預設是0700

;chown=nobody:nogroup      ;socket檔案的owner,格式:uid:gid

;[inet_http_server]        ;HTTP伺服器,提供web管理介面

;port=127.0.0.1:9001        ;Web管理後台啟動並執行IP和連接埠,如果開放到公網,需要注意安全性

;username=user              ;登入管理背景使用者名稱

;password=123              ;登入管理背景密碼

[supervisord]

logfile=/tmp/supervisord.log ;記錄檔,預設是 $CWD/supervisord.log

logfile_maxbytes=50MB        ;記錄檔大小,超出會rotate,預設 50MB,如果設成0,表示不限制大小

logfile_backups=10          ;記錄檔保留備份數量預設10,設為0表示不備份

loglevel=info                ;記錄層級,預設info,其它: debug,warn,trace

pidfile=/tmp/supervisord.pid ;pid 檔案

nodaemon=false              ;是否在前台啟動,預設是false,即以 daemon 的方式啟動

minfds=1024                  ;可以開啟的檔案描述符的最小值,預設 1024

minprocs=200                ;可以開啟的進程數的最小值,預設 200

[supervisorctl]

serverurl=unix:///tmp/supervisor.sock ;通過UNIX socket串連supervisord,路徑與unix_http_server部分的file一致

;serverurl=http://127.0.0.1:9001 ; 通過HTTP的方式串連supervisord

; [program:xx]是被管理的進程配置參數,xx是進程的名稱

[program:xx]

command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run  ; 程式啟動命令

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

startsecs=10        ; 啟動10秒後沒有異常退出,就表示進程正常啟動了,預設為1秒

autorestart=true    ; 程式退出後自動重啟,可選值:[unexpected,true,false],預設為unexpected,表示進程意外殺死後才重啟

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

user=tomcat          ; 用哪個使用者啟動進程,預設是root

priority=999        ; 進程啟動優先順序,預設999,值小的優先啟動

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

stdout_logfile_maxbytes=20MB  ; stdout 記錄檔大小,預設50MB

stdout_logfile_backups = 20  ; stdout 記錄檔備份數,預設是10

; stdout 記錄檔,需要注意當指定目錄不存在時無法正常啟動,所以需要手動建立目錄(supervisord 會自動建立記錄檔)

stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out

stopasgroup=false    ;預設為false,進程被殺死時,是否向這個進程組發送stop訊號,包括子進程

killasgroup=false    ;預設為false,向進程組發送kill訊號,包括子進程

;包含其它設定檔

[include]

files =/etc/supervisord.d/*.ini    ;可以指定一個或多個以.ini結束的設定檔

九、關於ini設定檔

同一個ini檔案可以寫多個[program:weatherserver],但後面的名稱不能相同,例如用連接埠號碼分開

[program:weatherserver5000]

directory=/home/lizh/goworkspace/src/weather

command=/home/lizh/goworkspace/src/weather/weatherserver

autostart=true

autorestart=true

startsecs=10

stdout_logfile=/home/lizh/log/weather_server.log

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_capture_maxbytes=1MB

stderr_logfile=/home/lizh/log/weather_server_error.log

stderr_logfile_maxbytes=1MB

stderr_logfile_backups=10

stderr_capture_maxbytes=1MB

[program:weatherserver5001]

directory=/home/lizh/goworkspace/src/weather

command=/home/lizh/goworkspace/src/weather/weatherserver -port 5001

autostart=true

autorestart=true

startsecs=10

stdout_logfile=/home/lizh/log/weather_server.log

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_capture_maxbytes=1MB

stderr_logfile=/home/lizh/log/weather_server_error.log

stderr_logfile_maxbytes=1MB

stderr_logfile_backups=10

stderr_capture_maxbytes=1MB

[program:weatherserver5002]

directory=/home/lizh/goworkspace/src/weather

command=/home/lizh/goworkspace/src/weather/weatherserver -port 5002

autostart=true

autorestart=true

startsecs=10

stdout_logfile=/home/lizh/log/weather_server.log

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_capture_maxbytes=1MB

stderr_logfile=/home/lizh/log/weather_server_error.log

stderr_logfile_maxbytes=1MB

stderr_logfile_backups=10

stderr_capture_maxbytes=1MB

參考資料:https://blog.csdn.net/fenglailea/article/details/77146248

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.