supervisor的简单使用

(一)supervisor的安装

(一)ubuntu安装 :

apt-get install supervisor

(二)centos安装 :

yum install supervisor

(三)pip形式安装:

pip install supervisor

ps:配置文件地址:/etc/supervisor/supervisord.conf,配置文件中注释符为 而不是 #

(二)supervisor的结构

在你安装成功后,在/etc/supervisor/目录下会分别生成一个配置文件(supervisord.conf)和文件夹conf.d
在这里插入图片描述

(一)supervisord.conf配置文件:

supervisord.conf文件一般由下面6部分组成

(一)[unix_http_server]:

该部分一般就这样配置即可

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

(二)[inet_http_server]:

[inet_http_server] ; HTTP 服务器,提供 web 管理界面
port=0.0.0.0:9001 ; Web 管理后台运行的 IP 和端口,如果开放到公网,需要注意安全性
username=root ; 登录管理后台的用户名
password=123 ; 登录管理后台的密码

(三)[supervisord]:

该部分一般就这样配置即可

[supervisord]
logfile = /tmp/supervisord.log            # 日志路径
logfile_maxbytes = 50MB                   # 日志轮转之前可能消耗的最大字节数,为0代表无限日志大小
logfile_backups=10                        # 日志轮换导致的备份数,为0代表不保留备份
loglevel = info                           # 日志级别(日志级别,有critical, error, warn, info, debug, trace, or blather等 默认为info。。。非必须设置项)
pidfile = /tmp/supervisord.pid            # 保留其pid文件的位置
nodaemon = false                          # 如果为true,supervisord将在前台而不是守护进程启动。默认false
minfds = 1024                             # 在supervisord将成功启动之前必须可用的文件描述符的最小数量,默认1024
minprocs = 200                            # 在supervisord将成功启动之前必须可用的进程描述符的最小数量,默认200
umask = 022                               # 超级过程的 umask。默认022
user = chrism                             # 指示 supervisord 在进行任何有意义的处理之前将用户切换到此UNIX用户帐户,默认不切换用户
identifier = supervisor                   # RPC接口使用的此supervisor进程的标识符字符串,默认supervisor
directory = /tmp                          # 当supervisord 守护进程时,切换到此目录
nocleanup = true                          # 防止supervisord在启动时清除任何现有的 AUTO 子日志文件,默认false
childlogdir = /tmp                        # 用于 AUTO 子日志文件的目录。
strip_ansi = false                        # 从子日志文件中剥离所有ANSI转义序列
environment = KEY1="value1",KEY2="value2" # 将被放置在 supervisord 进程环境中(以及作为其所有子进程的环境的结果)的 KEY="val",KEY2="val2" 形式的键/值对的列表。

(四)[supervisorctl]:

[supervisorctl]
serverurl=unix:////var/run/supervisor.sock ; 这个是supervisorctl本地连接supervisord的时候,本地UNIX socket路径,注意这个是和前面的[unix_http_server]对应的默认值就是unix:var/run/supervisor.sock。。非必须设置

#serverurl=http://127.0.0.1:9001 ; 这个是supervisorctl远程连接supervisord的时候,用到的TCP socket路径注意这个和前面的[inet_http_server]对应 默认就是http://0.0.0.0:9001。。。非必须项

username = root                        # 传递到supervisord服务器以用于身份验证的用户名(默认空。。非必须设置)
password = 123                          # 要传递到Supervisord服务器以用于身份验证的密码(默认空。。非必须设置)
prompt = mysupervisor                   # 用作supervisorctl提示符的字符串
history_file = /tmp/his_file.log        # 用作 readline 持久性历史记录文件的路径

(五)[rpcinterface:supervisor]:

这里默认这样配置就好

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

(六)[include]:

[include]
files = /etc/supervisor/conf.d/*.conf #对该目录下所有的进程进行管理

(二)文件夹conf.d:

该目录用来存放supervisord.conf下include节点的配置文件(一般是每个独立的进程一个独立的配置文件)

文件结构如下:

[program:项目名]  #是应用程序的唯一标识,不能重复
directory = /home/user/project  #进程目录
priority=999                  # 程序在启动和关闭顺序中的相对优先级。数字越高,优先级越高
command = python xxx.py  #执行程序的命令
autorestart = true  #是否自动重启
user = user  #启动的用户
redirect_stderr = true  #把 stderr 重定向到 stdout,默认 false
stdout_logfile = stdout.log  #异常日志
stderr_logfile = stderr.log  #正常日志
loglevel = info  #日志级别

#numprocs=10 ;进程数,注意:(相当于执行了10个command命令)
#process_name=%(program_name)s_%(process_num)02d


这里有两个参数需要注意,numprocs的数量为command命令执行的次数,默认为1,process_name默认为项目名,但是如果你numprocs参数不唯1,那么process_name就不能为一个固定值,因为process_name不能重复,还有你会发现一般会输出到stderr_logfile 对应的目录。

(三)配置实例

这里supervisord.conf配置文件就不用修改了,我们用supervisor维护uwsgi的进程,配置文件如下

[program:uwsgi]


priority=5
autostart=true
autorestart=true
startsecs=5  #如果启动5秒内进程都正常,视为正常启动
startretries=1  #在进程出异常后,尝试回复的次数
user=root
directory=/home/djangoProject/

#因为这里需要用到anaconda虚拟环境(这里source绝对路径是因为,刚开机时activate 还没有加入环境变量中,不用绝对路径会找不到)
command =bash -c "source /root/anaconda3/bin/activate && conda activate my_paddle && cd /home/djangoProject/ && uwsgi uwsgi.ini"
 
stdout_logfile=/home/djangoProject/uwsgi.log 
stderr_logfile=/home/djangoProject/uwsgi.log

还有就是,这里uwsgi的配置文件中最好不要设置后台启用,否则supervisor会认为uwsgi没有启动成功

uwsgi配置文件实例

[uwsgi]
#启动:uwsgi uwsgi.ini
#停止: uwsgi --stop uwsgi.pid
socket = 127.0.0.1:8080
chdir = /home/djangoProject
wsgi-file = djangoProject/wsgi.py
processes = 1
threads = 4
pidfile=uwsgi.pid

#后台运行,并输出日志
#daemonize = /home/djangoProject/uwsgi.log 

(四)web管理和周边命令

web管理,在浏览器输入ip:9001即可
在这里插入图片描述

PS:command中启动方式如果为后台启动,会导致识别不到pid,然后不断重启,这里最好将需要维护的进程以前台方式运行

周边命令:
supervisord -c /etc/supervisor/supervisord.conf 后台启动
supervisord -n -c /etc/supervisor/supervisord.conf 前台启动

supervisorctl stop program_name 停止某个进程
supervisorctl start program_name 启动某个进程
supervisorctl restart program_name 重启某个进程
supervisorctl stop all 停止全部进程
supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

(五)结语

补充:
https://blog.csdn.net/wc1695040842/article/details/103988813
https://blog.csdn.net/BLUE5945/article/details/80119248

如果有什么错误的地方,还请大家批评指正。最后,希望小伙伴们都能有所收获。

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Supervisor是一个用于管理和监控进程的工具。下面是一个简单Supervisor使用教程: 1. 安装Supervisor:在Linux系统上,可以使用以下命令来安装Supervisor: ``` sudo apt-get install supervisor ``` 2. 配置SupervisorSupervisor的配置文件位于`/etc/supervisor/supervisord.conf`。你可以编辑该文件来配置Supervisor的行为。 3. 添加要管理的进程:在配置文件中,你可以定义要由Supervisor管理的进程。你需要为每个进程指定一个配置块,包括进程的命令、目录、日志路径等信息。 以下是一个示例配置块: ``` [program:myapp] command=/path/to/myapp directory=/path/to/myapp/directory autostart=true autorestart=true stderr_logfile=/var/log/myapp.err.log stdout_logfile=/var/log/myapp.out.log ``` 在上面的示例中,`myapp`代表进程的名称,`command`指定了要运行的命令,`directory`指定了工作目录,`autostart`和`autorestart`分别指定了是否自动启动和重启进程,`stderr_logfile`和`stdout_logfile`指定了错误日志和输出日志的位置。 4. 启动Supervisor:安装完成后,你可以使用以下命令启动Supervisor: ``` sudo service supervisor start ``` 5. 管理进程:启动Supervisor后,它会根据配置文件中的设置自动启动你指定的进程。你可以使用以下命令来管理进程: ``` sudo supervisorctl status # 查看进程状态 sudo supervisorctl start myapp # 启动进程 sudo supervisorctl stop myapp # 停止进程 sudo supervisorctl restart myapp # 重启进程 ``` 这就是Supervisor的基本使用教程。你可以根据实际需求对配置文件进行进一步的配置,例如添加更多的进程配置块、设置进程的启动顺序等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值