进程管理工具-Supervisord +CeSi

article/2025/10/13 4:23:33

Supervisor

简介

Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不仅仅是 Python 进程)
Supervisor 是一个 C/S 模型的程序,Supervisor Components组件包含了服务端和客户端,WEB端

  • supervisord 服务端
  • supervisorctl 客户端
  • Web Server WEB端
1. 基本命令
安装:
1、sudo pip install supervisor2、默认配置文件位置:
[root@localhost /]# cat etc/supervisord.conf3、自定义配置目录:
[root@localhost supervisord.d]# pwd
/etc/supervisord.d
[root@localhost supervisord.d]# ls
gunicorn.ini  yun.ini4、启动服务:
[root@localhost /]# supervisord -c /etc/supervisord.conf
/usr/lib/python2.7/site-packages/supervisor/options.py:383: PkgResourcesDeprecationWarning: Parameters to load are deprecated.  Call .resolve and .require separately.return pkg_resources.EntryPoint.parse("x="+spec).load(False)
[root@localhost /]# ps -aux|grep supervisord
root      5135  0.1  0.8 226152 16736 ?        Ss   22:13   0:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root      5137  0.0  0.0 112724   992 pts/0    R+   22:13   0:00 grep --color=auto supervisord注:kill 进程号  5、supervisorctl 操作:
输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面:help # 查看帮助status # 查看程序状态stop program_name # 关闭 指定的程序start program_name # 启动 指定的程序restart program_name # 重启 指定的程序tail -f program_name # 查看 该程序的日志update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)
也可以直接输入指令:supervisorctl help supervisorctl update supervisorctl status supervisorctl stop program_name supervisorctl start program_namesupervisorctl restart program_namesupervisorctl tail -f program_namesupervisorctl stop all ;停止所有应用supervisorctl start all ;启动所有应用
2. 配置文件

2.1 默认配置文件解析:

位置:etc/supervisord.conf内容:# 指定了socket file的位置
[unix_http_server]
file=/tmp/supervisor.sock   ;UNIX socket 文件,supervisorctl 会使用
;chmod=0700                 ;socket文件的mode,默认是0700
;chown=nobody:nogroup       ;socket文件的owner,格式:uid:gid#用于启动一个含有前端的服务,可以从Web页面中管理服务。其中,port用于设置访问地址,username和password用于设置授权认证。
;[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,如果设成0,表示不限制大小
logfile_backups=10           ;日志文件保留备份数量默认10,设为0表示不备份
loglevel=info                ;日志级别,默认info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ;pid 文件
nodaemon=false               ;是否在前台启动,默认是false,即以 daemon 的方式启动
minfds=1024                  ;可以打开的文件描述符的最小值,默认 1024
minprocs=200                 ;可以打开的进程数的最小值,默认 200[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord; [program:xx]是被管理的进程配置参数,xx是进程的名称
[program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run  ; 程序启动命令
autostart=true       ; 在supervisord启动的时候也自动启动
startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3       ; 启动失败自动重试次数,默认是3
user=tomcat          ; 用哪个用户启动进程,默认是root
priority=999         ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20   ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程# 对事件进行的管理
;[eventlistener:theeventlistenername]# 对任务组的管理 ,包含其它配置文件
;[group:thegroupname]
;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
;priority=999                  ; the relative start priority (default 999)[include]
files = supervisord.d/*.ini    ;可以指定一个或多个以.ini结束的配置文件

2.2 自定义进程配置

注:supervisord.d目录用来存放用户自定义的进程配置例子:文件 qqc.ini
# 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
[program:qqc_one]
# 启动命令,与手动在命令行启动的命令是一样的
command=gunicorn wsgi:application -b 0.0.0.0:8000 -k gevent -w 2 -t 10 -n yun-gunicorn -m 0022 --log-level=info --access-logfile=- --error-logfile=- --max-requests=5000
# 程序的启动目录
directory=/home/yun/projects/yun
# 可以通过 environment 来添加需要的环境变量,一种常见的用法是使用指定的 virtualenv 环境
environment=DJANGO_SETTINGS_MODULE=settings.test
# 指定用户名
user=opt
# 日志目录 需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/var/log/supervisor/yun-gunicorn.stdout.log
stderr_logfile=/var/log/supervisor/yun-gunicorn.stderr.log
# 日志备份数量
stdout_logfile_backups = 20
# 指定日志文件大小
stdout_logfile_maxbytes = 20MB 
# 把 stderr 重定向到 stdout,默认 false,错误日志也会写进stdout_logfile中
redirect_stderr=True
# 在 supervisord 启动的时候也自动启动
autostart=True    
# 程序异常退出后自动重启
autorestart=True[program:qqc_two]
...
[program:qqc_free]
...# 集中管理多个进程
[group:qqc]
programs=qqc_one,qqc_two,qqc_free
  • 注意: supervisor不能监控后台进程,command 不能为后台运行命令
常用指令:
  • supervisord --nodaemon 前台启动Supervisor服务
  • supervisorctl -i 进入交互式Shell
  • supervisorctl status 查看任务列表
  • supervisorctl status helloworld 查看指定任务的状态
  • supervisorctl stop/start/restart all 结束/启动/重启所有任务
  • supervisorctl stop/start/restart helloworld 结束/启动/重启指定任务
  • supervisorctl reroad 重新加载配置文件,不增减任务
  • supervisorctl update all 重新加载配置文件,并进行必要的增减任务
  • supervisorctl remove/add 移除/添加任务(配置文件中已经存在的任务)
  • supervisorctl tail -f helloworld 实时查看任务的控制台输出
  • supervisorctl tail -f helloworld stderr 实时查看任务的控制台错误输出
  • supervisorctl reload 重启Supervisor服务
  • supervisorctl fg helloworld 将任务拉到前台,此时Ctrl+C不会结束任务,而是将任务放回后台
  • supervisorctl shutdown 终止Supervisor服务
  • supervisorctl clear all 清楚所有进程的日志文件
  • supervisorctl maintail -f 实时查看Supervisor服务的日志文件
  • supervisorctl signal SIGTERM all 结束所有进程
  • supervisorctl signal SIGKILL all 杀死所有进程
  • supervisorctl --serverurl http://localhost:9001 status 管理远程Supervisor服务

安装配置 CeSi

1. 简介

CeSi 是 Supervisor 官方推荐的集中化管理 Supervisor 实例的 Web UI,该工具是用 Python 编写,基于 Flask Web 框架 。

Superviosr 自带的 Web UI 不支持跨机器管理
Supervisor 进程,功能比较简单,通过 CeSi 可以集中管理各个服务器节点的进程,在 Web 界面就可以轻松管理各个服务的启动、关闭、重启等,很方便使用。

2. 安装

网上有很多安装CeSi的教程,都是基于v1.0版本,偶尔的v1.5版本的,而在github上已经更新到v2.6.7版本,所以网上的很多安装办法对v2.6.7根本不适用。
此处只介绍v2.6.7的安装步骤 。

安装 CeSi 有三个依赖:Python,Flask,sqlite3 一般的 Linux 发行版都默认安装了 Python,所以
Python 不需要再次安装; 从 Python 2.5 开始 sqlite3 已经在标准库内置了,所以也不需要安装 sqlite3
模块了; 另外很多 Linux 发行版已经自带 sqlite3,所以无需另外安装; 只需要安装 flask web 框架即可;

具体安装步骤如下:

# 安装依赖 (如果有跳过)
yum install -y git wget epel-release python34 python34-pip npm bzip2# 设置环境变量并创建安装目录
export CESI_SETUP_PATH=/usr/local/cesi
mkdir ${CESI_SETUP_PATH}
cd ${CESI_SETUP_PATH}# 下载cesi-2.6.7.tar.gz并解压
wget https://github.com/gamegos/cesi/releases/download/v2.6.7/cesi-extended.tar.gz -O cesi.tar.gz
tar -zxvf cesi.tar.gz# 创建venv虚拟环境(也可以使用已有的虚拟环境)
python3.4 -m venv venv# 激活venv虚拟环境
source venv/bin/activate
# 在venv虚拟环境中,使用pip3管道安装依赖
pip3 install -r requirements.txt
# 失效venv虚拟环境
deactivate############### 此段为可选安装,经本人测试,不建议安装,要安装一大堆东西,然并卵 ############
# (可选安装)升级node到最新版
npm install -g n
n latest
# (可选安装)安装 yarn
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
yum install -y yarn
# (可选安装)构建ui,需要安装yarn, node, npm
cd ${CESI_SETUP_PATH}/cesi/ui
yarn install
yarn build
######################################################################################## 复制配置文件到/etc目录
cp ${CESI_SETUP_PATH}/defaults/cesi.conf.toml /etc/cesi.conf# 复制服务配置文件到/etc/systemd/system目录,并注册为服务(CentOS7)
cp ${CESI_SETUP_PATH}/defaults/cesi.service /etc/systemd/system/cesi.service
三、CeSi 配置

​ 按上述脚本安装完成后,会生成配置文件在 /etc/cesi.conf,配置文件详细如下(此文件为真实用例):

# This is the main CeSI toml configuration file. It contains CeSI web application and# supervisord information to connect# This is the CeSI's own configuration.
[cesi]
# Database Uri
database = "sqlite:///users.db"                         # Relative path
# Etc
#database = "sqlite:opt/cesi/< version >/users.db"  # Absolute path
#database = "postgres://<user>:<password>@localhost:5432/<database_name>"
#database = "mysql+pymysql://<user>:<password>@localhost:3306/<database_name>"
activity_log = "activity.log"                           # File path for CeSI logs
admin_username = "admin"                                # Username of admin user
admin_password = "123456"                               # Password of admin user# This is the definition section for new supervisord node.
# [[nodes]]
# name = "api"          # (String) Unique name for supervisord node.
# environment = ""      # (String) The environment name provides logical grouping of supervisord nodes. It can be used as filtering option in the UI.
# username = ""         # (String) Username of the XML-RPC interface of supervisord Set nothing if no username is configured
# password = ""         # (String) Password of the XML-RPC interface of supervisord. Set nothing if no username is configured
# host = "127.0.0.1"    # (String) Host of the XML-RPC interface of supervisord
# port = "9001"         # (String) Port of the XML-RPC interface of supervisord# Default supervisord nodes
[[nodes]]
name = "ecs-soms"
environment = "soms"
username = "admin"  #supervisord web 的用户名
password = "123456" #密码
host = "127.0.0.1"
port = "9001"
四、CeSi 启动
  • 网上找的注册为系统服务的脚本启动会失败,经过本人多次尝试,已放弃。
  • 可直接使用如下命令启动,但关闭shell窗口时会结束进程:
/usr/local/cesi/venv/bin/python3 /usr/local/cesi/cesi/run.py --config-file /etc/cesi.conf

CeSi是基于flask框架搭建的,所以启动方式跟flask是一样的,默认端口是5000,如果要更改端口:
-p +端口号 就可以了

/usr/local/cesi/venv/bin/python3 /usr/local/cesi/cesi/run.py --config-file /etc/cesi.conf -p 5023
  • 现直接使用 supervisor 来管理启动 CeSi,具体教程见 Supervisor安装与配置,大致如下:

在 /etc/supervisor.d/ 目录下创建 cesi.conf 文件,并输入如下内容:


[program:cesi]
directory=/usr/local/cesi/cesi
environment=PATH="/root/.virtualenvs/py3_venv/bin/"
command=python run.py -p 5053 --config-file /etc/cesi.conf
autostart=true
startsecs=10
starttries=3
user=root
priority=996
redirect_stderr=false
stdout_logfile=/usr/local/cesi/cesi.log
stderr_logfile=/usr/local/cesi/cesi-err.log
stopasgroup=false
killasgroup=true

加入配置文件后要更新supervisor配置

supervisorltc reload

开启cesi进程

supervisorltc start cesi

五、管理界面
​ CeSi 安装完全后默认开放端口 5000,在浏览器中输入 http://127.0.0.1:5000 打开管理界面如下:
在这里插入图片描述在这里插入图片描述


http://chatgpt.dhexx.cn/article/niQo6OHQ.shtml

相关文章

通过 CeSi + Supervisor 可视化集中管理服务器节点进程

通过 CeSi Supervisor 可视化集中管理服务器节点进程 简介Supervisor 的安装及基本使用1. 安装2. 基本使用 2.1 启动 supervisor2.2 Supervisor 客户端 supervisorctl安装配置 CeSi1. 简介2. 安装3. 配置4. 启动Supervisor 服务设置开机自启动参考链接 通过 CeSi Supervis…

第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI

第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍安装解压安装依赖修改配置注册为系统服务启动登录一下&#xff0c;发现报错了解决方法 介绍 前一篇我们安装好了supervisor&#xff0c;supervisor自带了一个UI界面&#xff0c;不太好用&#xff…

CeSi 安装与配置

文章目录 CeSi 安装与配置一、介绍二、CeSi 安装三、CeSi 配置四、CeSi 启动五、管理界面 CeSi 安装与配置 一、介绍 ​ CeSi(Centralized Supervisor Interface) 是 Supervisor 官方推荐的集中化管理 Supervisor 实例的 Web UI&#xff0c;该工具是用 Python 编写&#xff0…

iis发布网站时出现根目录文件解决方案

Window server 发布 vs打包的web应用时出现根目录文件 在web.config配置文件中 &#xff0c;modules 节点前加上 runAllManagedModulesForAllRequests“true”

IIS 发布网站无法显示图片

发布网站以后&#xff0c;图片全是叉号。 1、先确认&#xff0c;IIS服务管理器下面没有MIME类型这个选项 2、参考设置权限&#xff0c;&#xff08;我的程序是拷贝过来的&#xff09;&#xff1a; https://blog.csdn.net/yzm272/article/details/86506615 1、第一步打开IIS 控…

IIS发布网站及网页显示设置

本文调试系统中容易出现问题的系统有&#xff1a;Windows Service 2008R2、Windosw Service 2012R2 1、在上述两个系统中需要增加IIS服务器功能&#xff0c;需要在《添加角色功能增加》点击下一步中&#xff0c;添加IIS服务器功能即可&#xff0c;在增加功能的同时提供原系统文…

IIS部署 发布网站详细步骤(相见恨晚)

前言 新闻发布系统做完有一段时间了&#xff0c;可是自己怎么也发布不出去&#xff0c;琢磨了好几天&#xff0c;也没能顺利将新闻发布系统发布出来。甚是着急啊。站在巨人的肩膀上——找师哥帮忙。在他的指导下才知道自己的问题出现在哪里。下面详细展示一下发布的全过程。 …

IIS发布c#网站

目录 首先在VS上发布网站 在IIS上将发布好的网站部署上 首先在VS上发布网站 1.配置文件&#xff1a;下拉选择“新建自定义配置文件” 2.连接&#xff1a;发布选择“文件系统”&#xff0c;目标位置选择自己定义的文件夹目录 3.设置&#xff1a;配置下拉选择“Release”&…

创建asp网站iis发布网站用IP地址进行访问

1、创建asp网站 vs—新建—项目—web—asp.net空应用程序—确定—点击解决方案—右键添加—新建项目—visual c#类库—分别添加model,dal,bll层 2、我们要先在vs中发布 3、弹出网站发布设置面板&#xff0c;点击<新建..>,创建新的发布配置文件 输入你自己定义的配置文件…

win7用IIS发布网站

1、将需要发布网站的工程文件共享 右键工程文件&#xff0c;选择“属性”&#xff0c;选择“共享”&#xff0c;进入下图 点击“共享”&#xff0c;进入下图 添加用户Everyone&#xff0c;点击下方的共享&#xff0c;即可完成工程文件共享。 2、确保系统上已经安装IIS&#x…

通过IIS发布网站教程【十分钟完成一个网站发布】

工具&#xff1a;win10系统&#xff1b;一个完成的html文件&#xff08;或者是php、asp等&#xff09; 一、开启IIS服务 【控制面板】——【程序和功能】——【打开或关闭windos功能】&#xff0c;勾选以下截图服务&#xff0c;点击确定即可 二、局域网搭建网站 服务器电脑添…

IIS部署,发布网站精选

一、IIS部署 1.打开控制面板&#xff0c;选择 ‘程序’ 2.程序和功能下&#xff0c;选择打开或关闭Windows功能 3.等待加载&#xff0c;选择Internet信息服务&#xff0c;勾选如下选项 至此IIS的选择完成了。接下来添加网站。 二、网站添加 1.开始 菜单搜索 IIS&#xff0c;…

服务器安装iis网站,安装IIS发布我的第一个网站图文教程

网站做完之后&#xff0c;接下来的事情就是发布了&#xff0c;那么&#xff0c;该如何用IIS发布到本地局域网呢&#xff1f; 一、IIS安装 首先&#xff0c;要安装IIS&#xff0c;IIS不需要去网站下载&#xff0c;它属于windows自带服务。 1、打开控制面板&#xff0c;找到“程序…

IIS 发布网站无法显示CSS、背景及图片文件---另一个思路--终极方案

解决这个真的是很坑的一个心路历程 现象如下 然后如果你说正常搜索 ---网上一定会说iis现什么静态内容等一般问题。比如 但是实际上是网站文件夹没有给IUser用户设定足够权限&#xff0c;与上图无关或者关系不大。 可是网上没有说明白怎么加上这个IUser权限 记得用F12 看看图…

IIS发布网站

IIS发布静态网页的网站 1、静态网页代码上传到服务器上&#xff0c;修改首页名称为index.html或者defult.html&#xff0c;如果是是别的IIS服务器会不认识。注意&#xff1a;这里需要同步修改网页里面所有与此首页相关的短连接。 2、配置IIS服务器 点击此处添加网站 配置…

【IIS】VS+IIS发布网站

前言 之前经历过很多次网站的发布&#xff0c;比如正在维护中的永和收银系统&#xff0c;就经常有重新发布的需求&#xff0c;所以对这块也算是轻车熟路&#xff0c;但是与之前的的发布不同的是&#xff0c;ITO需要先经过一层VS发布编译后&#xff0c;再由IIS发布到服务器。 V…

IIS发布网站,使用localhost无法调用Post、Put、Delete接口

一、项目情景 使用IIS发布网站&#xff0c;使用localhost不能访问&#xff0c;但使用127.0.0.1可以访问“Post、Put、Delete 接口” 二、问题描述 使用http://localhost:6008/swagger/index.html&#xff0c;操作 “Post、Put、Delete 接口”&#xff0c;报错&#xff1a;“40…

IIS发布网站时出现中文乱码的解决方法

一、更改IIS管理器 1、打开.NET全球化   2、将编码设置为一致&#xff0c;一般UTF-8 二、更改文本文档的保存格式 三、利用其他编辑器更改编码模式 1、notepad

使用IIS发布网站

公司的项目需要调用一个用C语言编写的服务&#xff0c;故研究了一下如何使用IIS发布网站。 IIS安装 首先确保电脑上已经安装IIS&#xff0c;如果没有安装&#xff0c;则需要先安装。我的电脑系统是Win10专业版&#xff0c;安装步骤如下。 1、打开控制面板&#xff0c;选择“…

利用IIS发布网站

利用IIS发布网站 IIS是缩写 &#xff0c;全称 Internet Information Services ( IIS,互联网信息服务 ) ,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。 IIS是指World Wide Web server服务&#xff0c;IIS是一种Web&#xff08;网页&#xff09;服务组件&…