首页 > 其他分享 >Supervisor 安装与使用

Supervisor 安装与使用

时间:2024-04-02 09:55:05浏览次数:18  
标签:supervisor supervisord default etc conf 使用 Supervisor logfile 安装

一、Supervisor 介绍

Supervisor 是一个用 Python 编写的进程管理工具,它可以用于监控和控制类 UNIX 操作系统上的多个进程。它是一个客户端/服务器系统,其中 Supervisor 的服务器端称为 supervisord,负责启动管理的子进程、响应客户端命令、重启崩溃或退出的子进程、记录子进程的 stdout 和 stderr 输出,以及处理子进程生命周期中的事件。客户端则称为 supervisorctl,它提供了一个类 shell 的接口,允许用户通过命令行与 supervisord 服务器进程通信,以控制子进程的状态、启动和停止进程,并获取正在运行的进程列表。

Supervisor官网地址:http://supervisord.org/

 

二、安装环境介绍

Linux:CentOS Linux release 7.6.1810 (Core)

Supervisor:supervisor-4.2.5

Python:Python 2.7.5

 

三、安装 Supervisor

1、下载 supervisor 源码包【supervisor-4.2.5.tar.gz】

 

2、在根目录新建一个名为【service】的目录,并把【supervisor-4.2.5.tar.gz】包移入进去

# 新建目录
mkdir service

# 解压supervisor源码包
tar -zxvf supervisor-4.2.5.tar.gz

 

3、进入supervisor目录,内容如下图:

# 进入目录
cd supervisor-4.2.5

# 查看目录下的文件
ll

 

4、安装 supervisor

# 安装 supervisor
python setup.py install

 

5、使用帮助命令来检测是否安装成功,结果如下图:

supervisorctl --help

 

 

四、配置 Supervisor

1、创建一个文件夹,用于存储相关配置文件

mkdir /etc/supervisor

 

2、使用命令,创建一个【Supervisor】配置文件。

# 符合(>)右侧的是配置文件的路径
echo_supervisord_conf > /etc/supervisor/supervisord.conf

 

3、找到 supervisord.conf 文件,修改里面的配置参数

# 原配置
[unix_http_server]
file=/tmp/supervisor.sock   ; the path to the socket file
;chmod=0700                 ; socket file mode (default 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; default is no username (open server)
;password=123               ; default is no password (open server)

# 修改后的配置,原先的/tmp目录下的内容容易被系统删除,导致启动失败
[unix_http_server]
file=/var/run/supervisor.sock   ; the path to the socket file
;chmod=0700                 ; socket file mode (default 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; default is no username (open server)
;password=123               ; default is no password (open server)

------------------------------------------------------------------------------

# 原配置
[supervisord]
logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB        ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10           ; # of main logfile backups; 0 means none, default 10
loglevel=info                ; log level; default info; others: debug,warn,trace
pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false               ; start in foreground if true; default false
silent=false                 ; no logs to stdout if true; default false
minfds=1024                  ; min. avail startup file descriptors; default 1024
minprocs=200                 ; min. avail process descriptors;default 200


# 修改后的配置,修改了服务的日志文件目录,修改了supervisord.pid的存放位置
[supervisord]
logfile=/etc/supervisor/log/supervisord.log    ; 避免被系统删除
logfile_maxbytes=50MB        ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10           ; # of main logfile backups; 0 means none, default 10
loglevel=info                ; log level; default info; others: debug,warn,trace
pidfile=/var/run/supervisord.pid    ; 避免被系统删除
nodaemon=false               ; start in foreground if true; default false
silent=false                 ; no logs to stdout if true; default false
minfds=1024                  ; min. avail startup file descriptors; default 1024
minprocs=200                 ; min. avail process descriptors;default 200

------------------------------------------------------------------------------

# 原配置
[supervisorctl]
serverurl=unix:///tmp/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=chris              ; 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

# 修改后的配置,修改supervisor.sock的存放位置,避免被系统删除
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; 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

------------------------------------------------------------------------------

# 原配置
;[include]
;files = relative/directory/*.ini


# 修改后的配置,设置子任务的配置文件目录
[include]
files = /etc/supervisor/conf.d/*.ini

 

4、保存退出后更新配置文件,如果之前没启动过服务可以不用更新

supervisorctl -c /etc/supervisor/supervisord.conf update

 

五、配置 Supervisor 的子任务

进入到【/etc/supervisor/conf.d】目录,创建名为【test.ini】的子任务,并写入如下内容:

#进入子任务配置文件目录
cd /etc/supervisor/conf.d

#创建子任务配置文件
touch test.ini

#编辑配置文件
vi test.ini

#配置文件中的具体内容
[program:test]        ;要和文件名称相同
command=/usr/local/php74/bin/php think testJob        ;启动该程序时将运行的命令,我这用的是TP框架中的think命令
directory=/www/school-task        ;表示command命令的执行目录,本文用的时候TP框架,school-task为项目名称
autorestart=true        ;自动重启
startsecs=3        ;启动后程序需要保持运行的总秒数,以认为启动成功(将进程从STARTING状态移动到running状态)。设置为0表示程序不需要在任何特定的时间内保持运行
startretries=3        ;启动失败时的最多重试次数
stdout_logfile=/etc/supervisor/log/test.out.log     ;输出日志文件路径
stderr_logfile=/etc/supervisor/log/test.err.log        ;错误日志文件路径
stdout_logfile_maxbytes=2MB        ;设置stdout_logfile的文件大小
stderr_logfile_maxbytes=2MB        ;设置stderr_logfile的文件大小
user=root        ;指定运行的用户
priority=999        ;程序在启动和关闭顺序中的相对优先级
numprocs=1
process_name=%(program_name)s_%(process_num)02d

 

六、supervisord相关操作命令

#启动supervisord
supervisord -c /etc/supervisor/supervisord.conf

#关闭supervisord
supervisorctl -c /etc/supervisor/supervisord.conf shutdown

#查看supervisord管理的进程,【all】是可选参数,表示查看所有的子任务
supervisorctl -c /etc/supervisor/supervisord.conf status all

#重新加载配置
supervisorctl -c /etc/supervisor/supervisord.conf update

#重新启动supervisord
supervisorctl -c /etc/supervisor/supervisord.conf reload

#停止supervisord管理的进程,【process_name】表示子任务名称 supervisorctl -c /etc/supervisor/supervisord.conf stop process_name #启动supervisord管理的进程,【process_name】表示子任务名称 supervisorctl -c /etc/supervisor/supervisord.conf start process_name

 

七、添加supervisord的systemctl服务命令和开机自启

 1、新建一个服务文件【/usr/lib/systemd/system/supervisord.service】,写入以下内容:

[Unit]
Description=Supervisor daemon

[Service]
#表示systemd应该以forking模式启动服务。在此模式下,systemd会启动一个父进程,然后父进程会fork出一个或者多个子进程。
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf shutdown
ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf reload
ExecStatus=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf status
ExecRestart=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf restart
#表示当systemd需要停止服务时,它会发送信号到服务的主进程。如果服务有子进程,那么子进程不会收到这个信号。
KillMode=process
#表示当服务非正常退出时(例如收到SIGKILL信号),systemd会尝试重启服务。
Restart=on-failure
#如果服务失败了,systemd会在尝试重启服务前等待30秒
RestartSec=30s
#指定运行服务的用户
User=root

[Install]
WantedBy=multi-user.target

 

2、重新加载配置文件

systemctl daemon-reload

 

3、配置系统开机启动

systemctl enable supervisord.service

 

4、systemctl 操作命令

# 启动supervisord
systemctl start supervisord.service

# 查看supervisord状态
systemctl status supervisord.service

# 重启supervisord
systemctl restart supervisord.service

# 停止supervisord
systemctl stop supervisord.service

# 重载配置
systemctl reload supervisord.service

 

八、结果展示

 

标签:supervisor,supervisord,default,etc,conf,使用,Supervisor,logfile,安装
From: https://www.cnblogs.com/mklblog/p/18070785

相关文章

  • 使用Sparse Checkout 排除跟踪Git仓库中指定的目录或文件
    应用场景在一个大工程里包含由不同部门开发的模块时,项目的Git仓库肯定很大,造成每次Git操作相对比较耗时。因为开发人员一般只关心他们部门的模块的代码,所以完全可以排除一些他完全不需要用到的目录。这时候就可以使用Git的SparseCheckout。操作步骤1、若未拉取仓库代码时mk......
  • 【wu-acw-client 使用】案例
    wu-acw-client使用项目介绍,使用acw-client,创建对应Java项目的增删改查(ORM:LazyORM、mybatis),项目模块架构:mvc、feign、ddd演示项目环境:idea、mac、mysql、jdk17springboot3.0.7稳定版本1.2.3-JDK17第一步通过idea创建一个项目选择通过springInitializr创建......
  • 将wavedrom图转换为excel+UVM使用双顶层环境+慎用casex和casez使用case inside+shell
    将wavedrom图转换为excel原理上是先转换为json,然后写入到excel中。importcsvimportjsonimportpandasaspdcontent=[]withopen("source.txt")asf:c=f.read()c=c.replace("reg","\"reg\"").replace("bits",&......
  • Windows Server 2022 服务器系统安装与磁盘管理
    系统安装先通过微软官网下载对应版本ISO镜像,实在不行就找网上资源下载。制作U盘启动盘下载Rufus(下载链接)通过使用UEFI格式来进行然后一路默认,等待即可。服务器设置开机进入F2bios选择BootSettings选择bootmode改为UEFl模式(这个更改的前提是你的硬盘大小在2TB......
  • R语言使用Rasch模型分析学生答题能力|附代码数据
    全文链接:http://tecdat.cn/?p=10175最近我们被客户要求撰写关于Rasch的研究报告,包括一些图形和统计输出。几个月以来,我一直对序数回归与项目响应理论(IRT)之间的关系感兴趣在这篇文章中,我重点介绍Rasch分析。最近,我花了点时间尝试理解不同的估算方法。三种最常见的估算方法是:......
  • Linux 环境 (红帽 rhel 7.3) Python 3 安装
    自己装的虚拟机(红帽7),默认安装的python2.7,更新为python3.8  自己做个记录,方便日后查看注意:红帽的yum 需要注册才能使用,必须要替换yum,替换方法请参见:怎样替换rhel7.3的yum【步骤】1.下载python3.8安装包python:https://www.python.org/downloads/source/  找稳定发......
  • Linux安装nginx保姆级教程
    文章目录前言一、nginx安装(保姆级教程)1.安装nginx依赖2.安装wget3.创建nginx安装目录4.下载nginx5.查看下载好的nginx6.解压缩7.查看当前目录下的文件→进入nginx-1.8.0目录→查看当前目录下的文件8.安装nginx9.查看nginx安装目录并启动nginx10.网络请求测试nginx是否正......
  • ai绘画基础总结(一)安装设置
    comfyUI对有工作流经验的小伙伴来说比较友好。小白学习comfyUI门槛也不是很高。一、安装环境小白推荐直接整合包,b站有很多秋叶的,圣杯,还有疯狂AI启动器。纯小白推荐使用疯狂AI启动器(满血包)能解决很多依赖问题,自行安装依赖,很多都需要能上外网,所以推荐满血包。高手直接上官方就OK......
  • MacBook Pro安装纯windows系统教程
    一、背景前些年头脑发热买了一台MacbookPro13,1(2016),现在是2024年,机身自带的128G已经无法满足使用需要,同时办公中跟windows系统之间的文件传输太麻烦,而且要置换的话也只能卖1000多,直接原价的2折不到,想了想还是装个windows系统接着用。二、资源准备参考网上资源,网上很多教程......
  • GIT初次使用教程以及error总结
    一、代码提交到仓库步骤1、安装git2、鼠标右键在桌面选择如下3、找到需要提交代码的仓库点击克隆/下载4、按照步骤在git命令窗口执行如下步骤1)将仓库代码文件克隆到本地2)设置git访问仓库时本地登录邮箱和账户名称3)每次提交代码前都要gitpull一下和仓库中的代码文......