supervisor主要由Supervisord、Supervisorctl、Web server和XML-RPC interface組成。
- Supervisord:主進程,負責管理進程的server,它會根據配置文件創建指定數量的應用程序的子進程,管理子進程的整個生命週期,對crash的進程重啓,對進程變化發送事件通知等。同時通過內置web server和XML-RPC Interface可以輕鬆實現進程管理。
- Supervisorctl:管理client,用戶通過命令行發送消息給supervisord,可以查看進程狀態,加載配置文件,啓停進程,查看進程標準輸出和錯誤輸出,遠程操作等。
- Web server:superviosr提供了web server功能,可通過web控制進程。
- XML-RPC interface: XML-RPC接口,提供XML-RPC服務來對子進程進行管理和監控。
安裝方法:
>brew install supervisor
>sudo npm install supervisor -g //mac
常用命令:
# 啓動supervisor
>python /usr/bin/supervisord
# 啓動監控的進程
>supervisorctl start all
# 關閉監控的進程
>supervisorctl stop all
# 查看狀態
>supervisorctl status
# 重新加載配置文件:
>supervisorctl reload
# 開啓supervisor
>brew services start supervisor
# 重啓supervisor
>brew services restart supervisor
# 停止supervisor
>brew services stop supervisor
開啓 web 管理:
>vi /usr/local/etc/supervisord.ini
# 將下面註釋去掉
[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)
username=fengjx ; (default is no username (open server))
password=fengjx1989 ; (default is no password (open server))
# 重啓服務
>brew services start supervisor
==> Tapping homebrew/services
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 10 (delta 0), reused 6 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.
Tapped 0 formulae (37 files, 51KB)
==> Successfully started `supervisor` (label: homebrew.mxcl.supervisor)
進程管理:
supervisord.ini 的最後一行配置:
files = /usr/local/etc/supervisor.d/*.ini
我們可以吧配置文件寫到 /usr/local/etc/supervisor.d/ 目錄下,只要以.ini 後綴結尾就行,例如管理nginx的狀態:
vi nginx.ini
[program:nginx]
command = sudo /usr/local/bin/nginx
stdout_logfile=/data/home/supervisor/logs/nginx_stdout.log
stdout_logfile_maxbytes=10MB
stderr_logfile=/data/home/supervisor/logs/nginx_stderr.log
stderr_logfile_maxbytes=10MB
autostart=true
autorestart=true
;environment = PATH="$PATH:/usr/local/bin"
然後,使用 supervisorctl 啓動 nginx。
supervisorctl start nginx
參考:
github上2個基於supervisor二次開發的集中進程管理工具,可在一個頁面下管理多臺機器的進程:
https://github.com/mlazarov/s...
https://github.com/TAKEALOT/n...