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密码,把图中的注释即可

results matching ""

    No results matching ""