簡介
supervisor的作用
- 方便快捷的啟動、重啟、關閉進程
- 服務掛掉后,自動重啟
- 可執(zhí)行文件或者配置文件修改后,服務自動重啟
一、安裝
1.通過pip或者brew安裝
- 有兩種安裝方式,一種是通過brew安裝
brew install supervisor
- 另一種是通過pip安裝
pip install supervisor
如果安裝過程中提示權限問題,直接加上sudo進行安裝
2.檢查是否安裝成功
- pip查看
pip show supervisor
Name: supervisor
Version: 4.2.1
Summary: A system for controlling process state under UNIX
Home-page: http://supervisord.org/
Author: Chris McDonough
Author-email: chrism@plope.com
License: BSD-derived (http://www.repoze.org/LICENSE.txt)
Location: /Users/username/.pyenv/versions/3.7.5/lib/python3.7/site-packages
Requires:
Required-by:
- brew查看
brew info supervisor
supervisor: stable 4.2.0 (bottled)
Process Control System
http://supervisord.org/
Not installed
From: https://mirrors.ustc.edu.cn/homebrew-core.git/Formula/supervisor.rb
==> Dependencies
Required: python@3.8 ?
==> Caveats
To have launchd start supervisor now and restart at login:
brew services start supervisor
Or, if you don't want/need a background service you can just run:
supervisord -c /usr/local/etc/supervisord.ini
==> Analytics
install: 1,350 (30 days), 3,573 (90 days), 13,475 (365 days)
install-on-request: 1,335 (30 days), 3,518 (90 days), 13,131 (365 days)
build-error: 0 (30 days)
二、配置文件
以brew安裝為例,從上面的查找的信息中找到配置文件的位置:/usr/local/etc/supervisord.ini
1.進入文件夾后,發(fā)現(xiàn)并沒有supervisord.ini文件,那我們手動生成一個配置文件
echo_supervisord_conf > /usr/local/etc/supervisord.ini
2.生成后,開始修改這個配置文件
- 打開監(jiān)聽TCP socket,啟動inet的http服務。
這個模塊默認是未開啟狀態(tài),打開后可通過web界面的方式控制子進程的狀態(tài)。
[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的服務端,需要配置日志文件等
[supervisord]
logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10 ; # of main logfile backups; 0 means none, default 10
loglevel=info ; log level; default info; others: debug,warn,trace
pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false ; start in foreground if true; default false
silent=false ; no logs to stdout if true; default false
minfds=1024 ; min. avail startup file descriptors; default 1024
minprocs=200 ; min. avail process descriptors;default 200
;umask=022 ; process file creation umask; default 022
;user=supervisord ; setuid to this UNIX account at startup; recommended if root
;identifier=supervisor ; supervisord identifier, default is 'supervisor'
;directory=/tmp ; default is not to cd during start
;nocleanup=true ; don't clean up tempfiles at start; default false
;childlogdir=/tmp ; 'AUTO' child log dir, default $TEMP
;environment=KEY="value" ; key value pairs to add to environment
;strip_ansi=false ; strip ansi escape codes in logs; def. false
- supervisorctl配置
supervisorctl相當于客戶端,
serverurl即為supervisord的服務地址,默認配置是:http://localhost:9001
[supervisorctl]
serverurl=unix:///tmp/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 in [*_http_server] if set
;password=123 ; should be same as in [*_http_server] if set
;prompt=mysupervisor ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history ; use readline history if available
- program
需要用來監(jiān)控的子進程配置,
program::設置子進程的名稱,也即web界面中展示的進程名稱
command=:為啟動子進程的命令行
directory:為執(zhí)行的項目目錄
stdout_logfile:log日志輸出文件地址
[program:appium]
command=python /Users/pc/Program/androidtest/manage.py runserver 0.0.0.0:9000 ; the program (relative uses PATH, can take args)
directory=/Users/pc/Program/androidtest ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
startsecs=5 ; # of secs prog must stay up to be running (def. 1)
startretries=3 ; max # of serial start failures when starting (default 3)
stdout_logfile=/Users/pc/Program/androidtest/supervisord.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=20MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
三、啟動
1.啟動supervisor
supervisord -c supervisord.ini
2.進入web后臺管理頁面
瀏覽器中輸入:http://127.0.0.1:9001
首次進入會提示輸入賬號和密碼,即在inet_http_server模塊中設置的username/password

截屏2020-12-11 16.27.55.png
3.登錄成功后,及可通過web界面來操作已經配置的子進程

屏幕快照 2020-12-11 16.35.26.png
四、常用命令
#關閉所有任務
supervisorctl shutdown
# 啟動某個進程
supervisorctl start programxxx
# 重啟某個進程
supervisorctl restart programxxx
# 停止全部進程 注:start、restart、stop都不會載入最新的配置文件
supervisorctl stop all
# 載入最新的配置文件,停止原有進程并按新的配置啟動、管理所有進程。
supervisorctl reload
# 根據最新的配置文件,啟動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啟。
supervisorctl update