Linux 之 supervisor安装和使用

这篇具有很好参考价值的文章主要介绍了Linux 之 supervisor安装和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Supervisor 官网

一、介绍

Supervisor有四个组件:

1. supervisord

运行Supervisor的后台服务,它用来启动和管理那些你需要Supervisor管理的子进程,响应客户端发来的请求,重启意外退出的子进程,将子进程的stdout和stderr写入日志,响应事件等。它是Supervisor最核心的部分。

2. supervisorctl

相当于supervisord的客户端,它是一个命令行工具,用户可以通过它向supervisord服务发指令,比如查看子进程状态,启动或关闭子进程。它可以连接不同的supervisord服务,包括远程机上的服务。

3. Web服务器

这是supervisord的Web客户端,用户可以在Web页面上完成类似于supervisorctl的功能。

4. XML-RPC接口

这是留给第三方集成的接口,你的服务可以在远程调用这些XML-RPC接口来控制supervisord管理的子进程。上面的Web服务器其实也是通过这个XML-RPC接口实现的。

二、安装

1、pip 安装

	pip3 install supervisor

2、easy_install 安装:

	yum install python-setuptools
	easy_install supervisor

3、centos 安装:

	yum update
	yum install -y epel-release
	yum install -y supervisor

4、Debian/Ubuntu 安装 (我的是这个)

	apt-get install supervisor

注意,安装后配置文件生成:

1、通过easy_install或pip安装后, 没有supervisor的配置文件

	 mkdir /etc/supervisor
	 echo_supervisord_conf > /etc/supervisor/supervisord.conf

2、使用 apt-get 安装后,supervisor的主配置文件在:

	 # 主进程配置文件
	 /etc/supervisor/supervisord.conf 
	
	 # 子进程配置文件, ini or conf 均可, 只要和主进程文件配置保持一致 均可
	/etc/supervisor/conf.d/*ini  or /etc/supervisor/conf.d/*conf 
	
	# 这句执行不执行都可以,因为本身也有该文件。 下面我会附加 supervisord.conf(主进程设置)
	 echo_supervisord_conf > /etc/supervisor/supervisord.conf

linux supervisor,linux,ubuntu

/etc/supervisor/supervisord.conf 主进程配置文件

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
;  - Shell expansion ("~" or "$HOME") is not supported.  Environment
;    variables can be expanded using this syntax: "%(ENV_HOME)s".
;  - Quotes around values are not supported, except in the case of
;    the environment= options as shown below.
;  - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
;  - Command will be truncated if it looks like a config file comment, e.g.
;    "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
;
; Warning:
;  Paths throughout this example file use /tmp because it is available on most
;  systems.  You will likely need to change these to locations more appropriate
;  for your system.  Some systems periodically delete older files in /tmp.
;  Notably, if the socket file defined in the [unix_http_server] section below
;  is deleted, supervisorctl will be unable to connect to supervisord.

[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)

; Security Warning:
;  The inet HTTP server is not enabled by default.  The inet HTTP server is
;  enabled by uncommenting the [inet_http_server] section below.  The inet
;  HTTP server is intended for use within a trusted environment only.  It
;  should only be bound to localhost or only accessible from within an
;  isolated, trusted network.  The inet HTTP server does not support any
;  form of encryption.  The inet HTTP server does not use authentication
;  by default (see the username= and password= options to add authentication).
;  Never expose the inet HTTP server to the public internet.

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; ip_address:port specifier, *:port for all iface
username=admin            ; default is no username (open server)
password=123456             ; default is no password (open server)

[supervisord]
logfile=/var/log/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=/var/run/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
;umask=022                   ; process file creation umask; default 022
;user=supervisord            ; setuid to this UNIX account at startup; recommended if root
;identifier=supervisor       ; supervisord identifier, default is 'supervisor'
;directory=/tmp              ; default is not to cd during start
;nocleanup=true              ; don't clean up tempfiles at start; default false
;childlogdir=/tmp            ; 'AUTO' child log dir, default $TEMP
;environment=KEY="value"     ; key value pairs to add to environment
;strip_ansi=false            ; strip ansi escape codes in logs; def. false

; The rpcinterface:supervisor 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:x] sections.

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

; The supervisorctl section configures how supervisorctl will connect to
; supervisord.  configure it match the settings in either the unix_http_server
; or inet_http_server section.

[supervisorctl]
serverurl=unix:///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=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

; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.

;[program:theprogramname]
;command=/bin/cat              ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
;autostart=true                ; start at supervisord start (default: true)
;startsecs=1                   ; # of secs prog must stay up to be running (def. 1)
;startretries=3                ; max # of serial start failures when starting (default 3)
;autorestart=unexpected        ; when to restart if exited after running (def: unexpected)
;exitcodes=0                   ; 'expected' exit codes used with autorestart (default 0)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
;killasgroup=false             ; SIGKILL the UNIX process group (def false)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (0 means none, default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stdout_syslog=false           ; send stdout to syslog with process name (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (0 means none, default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;stderr_syslog=false           ; send stderr to syslog with process name (default false)
;environment=A="1",B="2"       ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

; The sample eventlistener section below shows all possible eventlistener
; subsection values.  Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.

;[eventlistener:theeventlistenername]
;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;events=EVENT                  ; event notif. types to subscribe to (req'd)
;buffer_size=10                ; event buffer queue size (default 10)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=-1                   ; the relative start priority (default -1)
;autostart=true                ; start at supervisord start (default: true)
;startsecs=1                   ; # of secs prog must stay up to be running (def. 1)
;startretries=3                ; max # of serial start failures when starting (default 3)
;autorestart=unexpected        ; autorestart if exited after running (def: unexpected)
;exitcodes=0                   ; 'expected' exit codes used with autorestart (default 0)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
;killasgroup=false             ; SIGKILL the UNIX process group (def false)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=false         ; redirect_stderr=true is not allowed for eventlisteners
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (0 means none, default 10)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stdout_syslog=false           ; send stdout to syslog with process name (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (0 means none, default 10)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;stderr_syslog=false           ; send stderr to syslog with process name (default false)
;environment=A="1",B="2"       ; process environment additions
;serverurl=AUTO                ; override serverurl computation (childutils)

; The sample group section below shows all possible group values.  Create one
; or more 'real' group: sections to create "heterogeneous" process groups.

;[group:thegroupname]
;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
;priority=999                  ; the relative start priority (default 999)

; 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 = relative/directory/*.ini
; files = /etc/supervisor/conf.d/*.conf  # 均可, 子进程配置保持一致
files = /etc/supervisor/conf.d/*.ini

注:主配置文件说明网上有很多, 大家自行百度了解

http://www.17admin.cc/article-7033-1.html

子进程配置文件

[program:test]
user=root  # 执行进程的用户
directory=/xxx/PythonProject  # 脚本的工作目录
command=/user/bin/python xxx.py # 运行的实际命令

# 自启
priority=3  # 进程启动优先级,默认999,值小的优先启动
startsecs=30  #进程持续运行多久才认为是启动成功
autostart=true  # supervisor启动时自动该应用
autorestart=true  # 程序崩溃时自动重启

# 日志
stderr_logfile=/etc/supervisor/log/test/err.log # 输出error日志的文件路径
stdout_logfile=/etc/supervisor/log/test/out.log # 输出日志的文件路径
stdout_logfile_maxbytes = 30MB # stdout日志文件大小,默认 50MB
stdout_logfile_backups = 3  # stdout日志文件备份数

注: 子进程配置文件也有很多参数, 大家自行百度了解

linux supervisor,linux,ubuntu

三、启动服务supervisor 并查看是否生效

	/usr/local/python3/bin/supervisord -c  -d /etc/supervisor/supervisord.conf
	
	ps -ef | grep supervisord 

参数详解

linux supervisor,linux,ubuntu

四、 设置开机自启动

	systemctl enable supervisord.service
	systemctl status supervisord  # 检查启动状态

如果报错, 需自行配置 supervisord.service 文件

a、 在指定目录下创建文件supervisord.service

	vim /usr/lib/systemd/system/supervisord.service

b.输入以下内容:

[Unit]
Description=Supervisor daemon 

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s 

[Install]
WantedBy=multi-user.target

c、 执行以下命令

	systemctl enable supervisord

d、验证是否为开机启动,提示:enabled 表示设置成功!

	systemctl is-enabled supervisord

五、开启web页面管理程序

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

主进程配置文件 /etc/supervisor/supervisord.conf 中把注释的这几行代码全部解除注释,
然后更改端口,用户名和密码

linux supervisor,linux,ubuntu

六、supervisorctl 管理命令

client端的命令行工具,管理子进程,配置文件在/etc/supervisord.d/目录下

# 主进程文件 /etc/supervisord.conf修改, 重新加载配置文件
supervisorctl reload

# 子进程文件修改 /etc/supervisor/conf.d/test.ini 重新加载子配置
supervisorctl update  

supervisorctl status  # 查看所有进程的状态

supervisorctl status 子进程 # 查看单个子进程的状态: 

supervisorctl stop 子进程  # 关闭单个子进程

supervisorctl stop all  # 关闭所有子进程

supervisorctl start 子进程  # 启动单个子进程

supervisorctl start all  # 启动所有子进程

supervisorctl restart 子进程 # 重启单个子进程


直接执行supervisorctl命令, 进入交互页面

linux supervisor,linux,ubuntu文章来源地址https://www.toymoban.com/news/detail-763132.html

到了这里,关于Linux 之 supervisor安装和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux中ubuntu安装hashcat方法以及使用GPU破解

    驱动版本安装大全:https://developer.nvidia.com/cuda-toolkit-archive 驱动版本显卡对照表:https://blog.csdn.net/liferecords/article/details/127528193 查看自己显卡选择对应的版本,根据下面命令无脑安装就行了 错误1:clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR (好像不解决也正常能跑),执行下面命令解

    2024年04月13日
    浏览(40)
  • 在Ubuntu上安装和使用XRDP进行远程桌面连接Linux

    XRDP是一个开源的远程桌面协议服务器,允许用户通过远程连接从Windows、macOS或其他Linux系统访问Ubuntu系统的桌面环境。本文将详细介绍如何在Ubuntu上安装和配置XRDP,并通过远程桌面连接访问Ubuntu的桌面环境。 步骤1:安装XRDP 首先,我们需要通过以下命令安装XRDP软件包: 这将

    2024年02月05日
    浏览(43)
  • VMware中Linux系统下(Ubuntu)Hadoop的安装和使用步骤

    VMware中Linux系统下(Ubuntu)Hadoop的安装和使用步骤 此篇文章中安装的是:jdk1.8.0_202、hadoop-3.2.4 安装过程中可能会用到的复制粘贴方法: Windows下复制内容到虚拟机下的linux系统(Ubuntu) 1、创建Hadoop用户 2、切换到hadoop账户 1、更新apt 2、安装vim编辑器 1、安装SSH服务端 2、登录

    2024年04月09日
    浏览(49)
  • 【WSL】使用WSL在Windows上安装Linux(Ubuntu20.04)

    本文将介绍在win11系统下使用Windows自带的WSL功能安装Ubuntu20.04子系统,其中WSL2本质仍是基于Hyper-V的虚拟机。 Windows11 + WSL2 + Ubuntu20.04 (WSL译为适用于 Linux 的 Windows 子系统) 在Windows设置中添加可选功能,勾选 适用于Linux的Windows子系统(即WSL) 和 虚拟机平台 ,开启该功能需重

    2024年02月12日
    浏览(56)
  • Linux桌面端Ubuntu20.04安装和使用netplan修改IP地址

    1. 点击右上角的有线连接: 2. 进入后点击设置按钮:  3. 先点击IPv4,然后选择手动,再在地址处输入想要的IP地址,点击应用,则完成修改。 ​​​​​​ 首先输入: 安装完成后,进入安装文件夹: 打开配置的yaml文件: 进入后一般为空白,配置内容(复制后Ctrl+V): 这

    2024年02月15日
    浏览(52)
  • 72 C++ 在window上安装Linux(ubuntu),以及和ubuntu通讯,vmware,ubuntu,xshell,xftp工具的使用

    如何更改 linux unbutun 的ip,目的是从 windows访问通过xshell等工具可以访问linux 1.在windows 端,先通过 ipconfig查看windows的ip信息 无线局域网适配器 WLAN:    连接特定的 DNS 后缀 . . . . . . . :    本地链接 IPv6 地址. . . . . . . . : fe80::ef5:1484:d55b:39f5%9    IPv4 地址 . . . . . . . . . . . . : 19

    2024年01月25日
    浏览(46)
  • .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)

    在.NET Core部署到linux(CentOS)最全解决方案,常规篇一文,我们详细讲解了传统的.NET Core部署到Linux服务器的方法,学到了Linux在虚拟机下的安装、Xshell,Xftp的使用方法、git在linux下的交互使用以及.net core在linux下的发布与运行全过程。本文讲讲解通过使用Supervisor+Nginx的组合来实现

    2024年02月01日
    浏览(45)
  • win11 使用 WSL2 安装 linux 子系统 ubuntu 出现错误:无法解析服务器的名称或地址

    解决方法: 记事本打开 C:WindowsSystem32driversetchosts 文件, 添加如下解析地址 #raw.githubusercontent.com 185.199.108.133 raw.githubusercontent.com 185.199.109.133 raw.githubusercontent.com 185.199.110.133 raw.githubusercontent.com 185.199.111.133 raw.githubusercontent.com ifconfig /flushdns 查看可安装的 WSL wsl --list --onlin

    2024年04月27日
    浏览(69)
  • 【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节

    yum -y remove supervisor pip uninstall supervisor ref:https://blog.csdn.net/weixin_42260789/article/details/89207072 第一次重启 修改配置文件后重启 cat /etc/supervisord.conf 这里很重要,php管理拓展, nginx 管理web站点,都是这种分离的文件方式,各走各的,不一坨在一起,挺好的。 xxx.ini 的语法规则: 首行

    2024年02月09日
    浏览(40)
  • linux系统(centos、ubuntu、银河麒麟服务、uos、deepin)判断程序是否已安装,通用判断方法:使用所有应用和命令的判断

    项目中需要判断linux服务器中是否已经安装了某个服务 方法有很多种,但是很多都不通用, 脚本代码就不容易做成统一的 用下面的脚本代码去进行判断 脚本意思如下: 输入java -version命令,将返回的字符串输出第一行 如果里面包含java version这个字符串则说明jdk已经安装  下

    2024年02月11日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包