千家信息网

Supervisor 托管服务

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的
千家信息网最后更新 2026年10月31日Supervisor 托管服务

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,当然了自己写个脚本也是可以给supervisor托管的。在企业里我们更多的是托管服务,或是为了更方便的标准化,自动化而使用托管服务,对tomcat的使用尤为的方便。当然我们之前在一些中小型的公司,大家混布比较常见,一个服务器一个家目录下扔n多个项目,有的编译源码安装到处乱放,给维护或者新人带来了极大的维护成本,其实都可以使用supervisor来托管。


一、supervisor的安装其实很简单,这块说2中安装方法:

1、yum install supervisor


2、sudo pip install supervisor


Supervisor 相当强大,提供了很丰富的功能,不过我们可能只需要用到其中一小部分。安装完成之后,可以编写配置文件,来满足自己的需求。为了方便,我们把配置分成两部分:supervisord(supervisor 是一个 C/S 模型的程序,这是 server 端,对应的有 client 端:supervisorctl)和应用程序(即我们要管理的程序)。

首先来看 supervisord 的配置文件。安装完 supervisor 之后,可以运行echo_supervisord_conf 命令输出默认的配置项,也可以重定向到一个配置文件里:


echo_supervisord_conf > /etc/supervisord.conf


yum安装的当然不需要这么麻烦,默认的就在/etc目录下。


二:supervisor的配置:


[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=65535 ; 可以打开的文件描述符的最小值,默认 1024

minprocs=65535 ; 可以打开的进程数的最小值,默认 200

user=root

umask=022

; 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 /etc/supervisor/*.conf; 可以是 *.conf 或 *.ini


三、项目启动配置文件:


现在编写一份配置文件来管理这个进程(需要注意:用 supervisord 管理时,gunicorn 的 daemon 选项需要设置为 False):

[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


四:progrem简单配置:(下面为例)

[program:arch.gate.soa]

command=sh start.sh

process_name=arch.gate.soa

numprocs=1

stopsignal=INT

directory=/data/arch.gate.soa

user=www-data

redirect_stderr=true

stdout_logfile=/data/log/supervisor/arch.gate.soa.out

stdout_logfile_maxbytes=100MB

stdout_logfile_backups=10

stopasgroup=true

killasgroup=true

environment = ELEME_ENV="prod"



一份配置文件至少需要一个 [program:x] 部分的配置,来告诉 supervisord 需要管理那个进程。[program:x] 语法中的 x 表示 program name,会在客户端(supervisorctl 或 web 界面)显示,在 supervisorctl 中通过这个值来对程序进行 start、restart、stop 等操作。


五、使用 supervisorctl:

Supervisorctl 是 supervisord 的一个命令行客户端工具,启动时需要指定与 supervisord 使用同一份配置文件,否则与 supervisord 一样按照顺序查找配置文件。

上面这个命令会进入 supervisorctl 的 shell 界面,然后可以执行不同的命令了:


> status # 查看程序状态

> stop usercenter # 关闭 usercenter 程序

> start usercenter # 启动 usercenter 程序

> restart usercenter # 重启 usercenter 程序

> reread # 读取有更新(增加)的配置文件,不会启动新添加的程序

> update # 重启配置文件修改过的程序



上面这些命令都有相应的输出,除了进入 supervisorctl 的 shell 界面,也可以直接在 bash 终端运行:

$ supervisorctl status

$ supervisorctl stop usercenter

$ supervisorctl start usercenter

$ supervisorctl restart usercenter

$ supervisorctl reread

$ supervisorctl update


除了 supervisorctl 之外,还可以配置 supervisrod 启动 web 管理界面,这个 web 后台使用 Basic Auth 的方式进行身份认证。

除了单个进程的控制,还可以配置 group,进行分组管理。

经常查看日志文件,包括 supervisord 的日志和各个 pragram 的日志文件,程序 crash 或抛出异常的信息一半会输出到 stderr,可以查看相应的日志文件来查找问题。

Supervisor 有很丰富的功能,还有其他很多项配置,可以在官方文档获取更多信息:http://supervisord.org/index.html


文件 配置 程序 日志 管理 进程 命令 界面 目录 托管 服务 后台 部分 方式 输出 运行 最小 信息 功能 单个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小米移动互联网科技园 中智农互联网科技 南京欣网互联网络科技有限公司 易互联网科技有限公司 卓越科技(互联网 ) 易通互联网络科技有限公司 卓越科技互联网 招聘 阿里巴巴算科技企业还是互联网 世界互联网科技公司市值排名 厦门千工互联网科技有限公司 呼和浩特新华互联网科技学院 青海科技产业互联网发展 互联网公司黑科技创始人 晋城互联网科技 特约风豹互联网科技为什么扣费 合肥互联网科技公司公章图片 黑科技 体验场景 互联网大会 产业互联网科技服务公司 江苏互联网智能科技产品出厂价 张家口科技产业互联网平台 上海挚品互联网科技有限公司 伟宏互联网科技 科技互联网项目 智能科技公司是互联网公司吗 开启互联网科技时代小说 互联网科技热点资讯 移动互联网年度科技创新 互联网科技研发水平 健康食品互联网创新科技园项目 黑龙江互联网科技公司
0