supervisor安装和配置
supervisor 是由python語言編寫、基于linux操作系統的一款服務器管理工具,用以監控服務器的運行,發現問題能立即自動預警及自動重啟等功能。
Supervisor是一個進程管理工具,官方的說法
用途就是有一個進程需要每時每刻不斷的跑,但是這個進程又有可能由于各種原因有可能中斷。當進程中斷的時候我希望能自動重新啟動它,此時,我就需要使用到了Supervisor
這個工具主要就兩個命令:
supervisord : supervisor的服務器端部分,啟動supervisor就是運行這個命令
supervisorctl:啟動supervisor的命令行窗口。
安裝(Centos):
成功安裝后可以登陸python控制臺輸入import supervisor 查看是否能成功加載。
生成配置文件(supervisord.conf):
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件:
在supervisord.conf最后增加(分號后邊的表示注釋,可以不寫):
運行命令:
supervisord -c /etc/supervisord.conf ?//啟動supervisor
supervisorctl //打開命令行
ctl中: help //查看命令
ctl中: status //查看狀態
另外需要注意:如果修改了 /etc/supervisord.conf ,需要執行 supervisorctl reload 來重新加載配置文件,否則不會生效。。。
[配置文件]
[root@vm source]# echo_supervisord_conf > /etc/supervisord.conf[監視一個程序]
; The [include] section can just contain the "files" setting. This ; setting can list multiple files (separated by whitespace or ; newlines). It can also contain wildcards. The filenames are ; interpreted as relative to this file. Included files *cannot* ; include files themselves.[include] /**我是注釋,一定要把前面的分號;去掉,不然不會開啟include功能,太傻了**/ files = /etc/supervisor/*.ini在?/etc/supervisor/?目錄下建立?redis.ini?文件
[program:redis] command=/usr/bin/redis-server /usr/local/redis/redis.conf autorstart=true autorestart=true stdout_logfile=/tmp/supervisor.log[Web配置]
[inet_http_server] ; inet (TCP) server disabled by default port=*: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))如果配置了用戶名和密碼,就需要輸入用戶名和密碼才能進入web界面。
[啟動supervisord]
[root@vm source]# supervisord可能會輸出一堆信息出來/usr/lib/python2.6/site-packages/supervisor-3.1.3-py2.6.egg/supervisor/options.py:296: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.'Supervisord is running as root and it is searching ' /usr/lib/python2.6/site-packages/supervisor-3.1.3-py2.6.egg/supervisor/options.py:383: DeprecationWarning: Parameters to load are deprecated. Call .resolve and .require separately.return pkg_resources.EntryPoint.parse("x="+spec).load(False)不用管它
[root@vm source]# ps -ef |grep supervisordroot 20041 1 0 03:21 ? 00:00:00 /usr/bin/python /usr/bin/supervisord[root@vm source]# ps -ef| grep redisroot 20074 20073 0 03:23 ? 00:00:00 /usr/bin/redis-server *:6379有上述進程,就表明成功了。
[WEB管理界面]
[命令行管理工具]
[root@vm source]# supervisorctl status redis RUNNING pid 20074, uptime 0:13:25
來源:http://www.cnblogs.com/sss-justdDoIt/p/5631513.html
supervisor安裝和配置
直接命令 easy_install?supervisor
如果報錯先安裝 yum?install?python-setuptools,再上面一條命令;
安裝成功后顯示finished,我們再次進行python環境,輸入import supervisor ,如果沒提示錯誤則表示安裝成功。
接下來是對supervisor配置,首先我們要生成配置文件,在shell終端輸入echo_supervisord_conf > /etc/supervisord.conf
接著編輯配置文件
vi /etc/supervisord.conf
這里,每個不同的項目,使用了一個單獨的配置的文件,放置在?/etc/supervisor/?下面,于是修改?/etc/supervisord.conf?,加上如下內容:
[include] files = /etc/supervisor/*.conf修改完后,我們便可以將項目的配置文件命名為 .conf 放置在 /etc/supervisor/ 下面即可。
例如在vi /etc/supervisor/usercenter.conf [program:usercenter] directory?=?/home/leon/projects/usercenter?;?程序的啟動目錄 command?=?gunicorn?-c?gunicorn.py?wsgi:app??;?啟動命令,可以看出與手動在命令行啟動的命令是一樣的 autostart?=?true?????;?在?supervisord?啟動的時候也自動啟動 startsecs?=?5????????;?啟動?5?秒后沒有異常退出,就當作已經正常啟動了 autorestart?=?true???;?程序異常退出后自動重啟 startretries?=?3?????;?啟動失敗自動重試次數,默認是?3 user?=?leon??????????;?用哪個用戶啟動 redirect_stderr?=?true??;?把?stderr?重定向到?stdout,默認?false stdout_logfile_maxbytes?=?20MB??;?stdout?日志文件大小,默認?50MB stdout_logfile_backups?=?20?????;?stdout?日志文件備份數 ;?stdout?日志文件,需要注意當指定目錄不存在時無法正常啟動,所以需要手動創建目錄(supervisord?會自動創建日志文件) stdout_logfile?=?/data/logs/usercenter_stdout.log ;?可以通過?environment?來添加需要的環境變量,一種常見的用法是修改?PYTHONPATH ;?environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
運行命令:
?分服務端supevisord和客戶端supervisorctlsevice supervisord start
執行命令supervisorctl,啟動supervisorctl,進入shell界面
>?status????# 查看程序狀態 >?stop?usercenter???# 關閉 usercenter 程序 >?start?usercenter??# 啟動 usercenter 程序 >?restart?usercenter????# 重啟 usercenter 程序 >?reread????#?讀取有更新(增加)的配置文件,不會啟動新添加的程序 >?update????#?重啟配置文件修改過的程序 >reload ? ? ?如果修改了 /etc/supervisord.conf ,需要執行 supervisorctl reload 來重新加載配置文件,否則不會生效。。
=============================================
[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 logfile_backups=10???????????;?日志文件保留備份數量默認?10 loglevel=info????????????????;?日志級別,默認?info,其它:?debug,warn,trace pidfile=/tmp/supervisord.pid?;?pid?文件 nodaemon=false???????????????;?是否在前臺啟動,默認是?false,即以?daemon?的方式啟動 minfds=1024??????????????????;?可以打開的文件描述符的最小值,默認?1024 minprocs=200?????????????????;?可以打開的進程數的最小值,默認?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 http://www.ttlsa.com/linux/using-supervisor-control-program/-----挺詳細的 隨系統啟動服務centos7安裝supervisord
????#yum -y install supervisor
????安裝路徑/usr/bin/supervisord,,配置文件/etc/supervisor.conf
?
一、手動啟動/關閉
supervisor手動啟動:
????#/usr/bin/supervisord -c /etc/supervisor.conf
supervisor手動關閉:
????#/usr/bin/supervisorctl stop all????先關閉supervisor啟動腳本,之后再關閉supervisord服務
????#kill pid
supervisord開機自啟動腳本(各版本系統):https://github.com/Supervisor/initscripts
?
二、添加開機自啟動服務:
centos7 開機自啟動腳本:
????#vim /lib/systemd/system/supervisord.service
# supervisord service for sysstemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
[Service]
ExecStart=/usr/bin/supervisord
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
?
[Install]
WantedBy=multi-user.target
?
這個自啟動腳本需要修改/etc/supervisord.conf配置文件:
????#vim /etc/supervisrod.conf
????????nodaemon=false????改成true
?
或者:#vim /lib/systemd/system/supervisord.service
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service
?
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
SysVStartPriority=99
?
[Install]
WantedBy=multi-user.target
?
無需修改/etc/supervisord.conf配置文件
?
兩個自啟動腳本都能夠添加到systemctl自啟動服務
????#systemctl enable supervisord.service
????#systemctl start/restart/stop supervisord.service 可能還需要chkconf supervisord on
總結
以上是生活随笔為你收集整理的supervisor安装和配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 高级特性 --- 反射
- 下一篇: Lambda 表达式详解~Streams