python進(jìn)程管理工具supervisor的安裝與使用教程
前言
在一個(gè)分布式環(huán)境中,每臺機(jī)器上可能需要啟動和停止多個(gè)進(jìn)程,使用命令行方式一個(gè)一個(gè)手動啟動和停止非常麻煩,而且查看每個(gè)進(jìn)程的狀態(tài)也很不方便。如果有一個(gè)工具能夠?qū)崿F(xiàn)每臺機(jī)器上多個(gè)進(jìn)程的簡單高效中心化管理將是非常方便的。于是Supervisord工具應(yīng)運(yùn)而生。與Supervisord類似的工具包括monit, daemontools和runit。下面話不多說了,來一起看看詳細(xì)的介紹吧。
安裝
Supervisord是運(yùn)行在Python環(huán)境下的服務(wù)監(jiān)控程序,所以在安裝supervisord之前必須有python環(huán)境。
yum install python-setuptools easy_install supervisor
如果安裝成功,鍵入: echo_supervisord_conf
,會顯示一個(gè)superviscord_conf 的配置模板。
這里使用重定向運(yùn)算符將配置文件定向到/etc路徑下(方便管理)
echo_supervisord_conf>/etc/supervisord.conf
配置文件詳解
[unix_http_server] file=/tmp/supervisor.sock ; UNIX socket 文件,supervisorctl 會使用 ;chmod=0700 ; socket 文件的 mode,默認(rèn)是 0700 ;chown=nobody:nogroup ; socket 文件的 owner,格式: uid:gid ;[inet_http_server] ; HTTP 服務(wù)器,提供 web 管理界面 ;port=127.0.0.1:9001 ; Web 管理后臺運(yùn)行的 IP 和端口,如果開放到公網(wǎng),需要注意安全性 ;username=user ; 登錄管理后臺的用戶名 ;password=123 ; 登錄管理后臺的密碼 [supervisord] logfile=/tmp/supervisord.log ; 日志文件,默認(rèn)是 $CWD/supervisord.log logfile_maxbytes=50MB ; 日志文件大小,超出會 rotate,默認(rèn) 50MB logfile_backups=10 ; 日志文件保留備份數(shù)量默認(rèn) 10 loglevel=info ; 日志級別,默認(rèn) info,其它: debug,warn,trace pidfile=/tmp/supervisord.pid ; pid 文件 nodaemon=false ; 是否在前臺啟動,默認(rèn)是 false,即以 daemon 的方式啟動 minfds=1024 ; 可以打開的文件描述符的最小值,默認(rèn) 1024 minprocs=200 ; 可以打開的進(jìn)程數(shù)的最小值,默認(rèn) 200 ; the below section must remain in the config file for RPC ; (supervisorctl/web interface) to work, additional interfaces may be ; added by defining them in separate rpcinterface: sections [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///tmp/supervisor.sock ; 通過 UNIX socket 連接 supervisord,路徑與 unix_http_server 部分的 file 一致 ;serverurl=http://127.0.0.1:9001 ; 通過 HTTP 的方式連接 supervisord ; 包含其他的配置文件 [include] files = relative/directory/*.ini ; 可以是 *.conf 或 *.ini
進(jìn)程Program配置
[program:usercenter] directory = /home/leon/projects/usercenter ; 程序的啟動目錄 command = gunicorn -c gunicorn.py wsgi:app ; 啟動命令,可以看出與手動在命令行啟動的命令是一樣的 autostart = true ; 在 supervisord 啟動的時(shí)候也自動啟動 startsecs = 5 ; 啟動 5 秒后沒有異常退出,就當(dāng)作已經(jīng)正常啟動了 autorestart = true ; 程序異常退出后自動重啟 startretries = 3 ; 啟動失敗自動重試次數(shù),默認(rèn)是 3 user = leon ; 用哪個(gè)用戶啟動 redirect_stderr = true ; 把 stderr 重定向到 stdout,默認(rèn) false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默認(rèn) 50MB stdout_logfile_backups = 20 ; stdout 日志文件備份數(shù) ; stdout 日志文件,需要注意當(dāng)指定目錄不存在時(shí)無法正常啟動,所以需要手動創(chuàng)建目錄(supervisord 會自動創(chuàng)建日志文件) stdout_logfile = /data/logs/usercenter_stdout.log ; 可以通過 environment 來添加需要的環(huán)境變量,一種常見的用法是修改 PYTHONPATH ; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
將進(jìn)程配置添加到supervisord.conf文件中
推薦將各個(gè)進(jìn)程配置放到單獨(dú)的文件中,然后通過[include]配置項(xiàng)引用
[include] files = /etc/supervisor/*.conf
supervisor服務(wù)啟動
運(yùn)行命令
supervisord -c /etc/supervisord.conf
supervisor服務(wù)客戶端管理
可以使用supervisord的命令行客戶端管理工具supervisorctl,來管理進(jìn)程。
supervisorctl status supervisorctl stop usercenter supervisorctl start usercenter supervisorctl restart usercenter supervisorctl reread supervisorctl update
supervisor web管理界面
;[inet_http_server] ; HTTP 服務(wù)器,提供 web 管理界面 ;port=127.0.0.1:9001 ; Web 管理后臺運(yùn)行的 IP 和端口,如果開放到公網(wǎng),需要注意安全性 ;username=user ; 登錄管理后臺的用戶名 ;password=123 ; 登錄管理后臺的密碼
在瀏覽器中輸入http://127.0.0.1:9001,即可進(jìn)入web管理界面
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- python測試開發(fā)django之使用supervisord?后臺啟動celery?服務(wù)(worker/beat)
- 在python3中使用Supervisor的詳細(xì)教程
- 使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式
- Python supervisor強(qiáng)大的進(jìn)程管理工具的使用
- 基于Python 的進(jìn)程管理工具supervisor使用指南
- Python使用Supervisor來管理進(jìn)程的方法
- python進(jìn)程管理工具supervisor使用實(shí)例
- 使用Python的Supervisor進(jìn)行進(jìn)程監(jiān)控以及自動啟動
- python進(jìn)程管理工具supervisor安裝使用
相關(guān)文章
Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包
今天小編就為大家分享一篇關(guān)于Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04linux環(huán)境下安裝pyramid和新建項(xiàng)目的步驟
這篇文章簡單介紹了linux環(huán)境下安裝pyramid和新建項(xiàng)目的步驟,大家參考使用2013-11-11Python中的默認(rèn)參數(shù)實(shí)例分析
這篇文章主要介紹了Python中的默認(rèn)參數(shù)實(shí)例分析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python?十大經(jīng)典排序算法實(shí)現(xiàn)詳解
排序算法是《數(shù)據(jù)結(jié)構(gòu)與算法》中最基本的算法之一。排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存2022-01-01Python中的pandas表格模塊、文件模塊和數(shù)據(jù)庫模塊
這篇文章介紹了Python中的pandas表格模塊、文件模塊和數(shù)據(jù)庫模塊,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Python中reset_index()函數(shù)的使用
本文主要介紹了Python中reset_index()函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05