mac安装supervisor
Mac环境安装和使用 supervisor
supervisor 用于管理自定义任务进程,可配置服务自动重启等多种功能,方便用户的计划任务管理。
安装
推荐采用 brew 包管理工具进行安装:
brew install supervisor
如果通过pip进行安装,需要重点关注pip所在的python环境,是处于本机系统下还是在conda env中。\ 不同环境下,supervisor的配置文件位置和参数有差异,容易导致问题。
检查是否安装成功:
% brew info supervisor
Last login: Thu Aug 24 22:18:25 on ttys002
➜ ~ brew info supervisor
==> supervisor: stable 4.2.5 (bottled), HEAD
Process Control System
http://supervisord.org/
/opt/homebrew/Cellar/supervisor/4.2.5 (951 files, 13.7MB) *
Poured from bottle using the formulae.brew.sh API on 2023-08-24 at 21:40:27
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/s/supervisor.rb
License: BSD-3-Clause-Modification
==> Dependencies
Required: python@3.11 ✔
==> Options
--HEAD
Install HEAD version
==> Caveats
To 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:
/opt/homebrew/opt/supervisor/bin/supervisord -c /opt/homebrew/etc/supervisord.conf --nodaemon
==> Analytics
install: 371 (30 days), 1,001 (90 days), 1,962 (365 days)
install-on-request: 367 (30 days), 997 (90 days), 1,958 (365 days)
build-error: 0 (30 days)
其默认配置文件位置:/opt/homebrew/etc/supervisord.conf
配置
这里首先说明一下,有不少文章说明是按照如下方式生成supervisord配置文件:
echo_supervisord_conf > /usr/local/etc/supervisord.ini
但是本文实践过程中,不需要这一步骤,安装完成后即自动存在supervisord.conf配置文件。\ 接下来,我们直接打开并修改配置文件。
启用http服务
打开监听TCP socket,启动inet的http服务。这个模块默认是未开启状态,打开后可通过web界面的方式管理子进程。只要将每行首位的分号;字符去掉即可。
[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全局配置
在[supervisord]
部分,可看到logfile等各类配置参数,一般情况下保持默认即可。
修改 supervisorctl配置
supervisord 与 supervisorctl 之间是服务端与客户端的关系,因此,需要配置如下:
[supervisorctl]
;serverurl=unix:///opt/homebrew/var/run/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=user ; 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
这里服务端url和账户信息,要与前面 [inet_http_server]的配置保持一致。
编写 program任务配置
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]
files = /opt/homebrew/etc/supervisor.d/*.ini
因此,不推荐直接在 supervisord.conf中编写 program,而应该按照如上include说明,在同级目录下创建一个文件夹 supervisor.d,然后将自己的任务配置文件放在该文件夹下。
mkdir /opt/homebrew/etc/supervisor.d
touch github_webhook.ini
子进程配置项主要包括:
- program: 设置子进程的名称,也即web界面中展示的进程名称,不允许重复。
- command: 启动子进程的命令行
- directory: 执行的项目目录
- stdout_logfile: log日志输出文件路径,必须事先创建好
配置示例:
[program:github_webhook]
command=sh /Volumes/SDD/MyFile/Projects/github_webhook/run.sh
directory=/Volumes/SDD/MyFile/Projects/github_webhook
autostart=false
startsecs=5
stdout_logfile=/Volumes/SDD/MyFile/Projects/logs/github_webhook/supervisor.log
开始运行
启动 supervisor
supervisord -c /opt/homebrew/etc/supervisord.conf
进入 web后台管理页面,浏览器输入:http://127.0.0.1:9001
,按照提示输入前面配置的用户名密码。\
登录成功后,即可通过web界面来操作已经配置的子进程。\
命令行管理
除了通过web页面进行任务进程的管理,也可使用 supervisorctl 命令进行管理。\ 常用命令如下:
supervisorctl
#关闭所有任务
supervisorctl shutdown
# 启动某个进程
supervisorctl start programxxx
# 重启某个进程
supervisorctl restart programxxx
# 停止全部进程 注:start、restart、stop都不会载入最新的配置文件
supervisorctl stop all
# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl reload
# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisorctl update
查看执行的日志
supervisorctl
tail 「name」 stderr
brew安装的重启命令
brew services start supervisor
关闭supervisorctl密码,把图中的注释即可