文章目录

  • Supervisor 安装与配置
  • 一、介绍
  • 二、名词释义
  • 三、Supervisor 安装
  • 三、Supervisor 配置
  • 四、启动控制终端
  • 五、注册为系统服务
  • 六、管理界面
    • 1、管理界面的弊端

Supervisor 安装与配置

一、介绍

​ Supervisor 是用Python开发的一个 client/server 服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,Supervisort 监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

​ 因为Supervisor是Python开发的,安装前先检查一下系统否安装了Python2.4以上版本。下面以 CentOS7,Python2.7版本环境下,介绍Supervisor的安装与配置步聚。

二、名词释义

supervisor:要安装的软件的名称。
supervisord:装好supervisor软件后,supervisord用于启动supervisor服务。
supervisorctl:用于管理supervisor配置文件中program。

三、Supervisor 安装

Supervisor 需要使用 root 用户安装,以 CentOS7 为例,安装指令如下:

注意:Supervisor 目前只支持 Python2.7,CenOS7默认已安装 Python2.7。

su - root
yum install epel-release
yum install -y supervisorsystemctl enable supervisord  # 开机自启动
systemctl start supervisord   # 启动supervisord服务
systemctl status supervisord  # 查看supervisord服务状态ps -ef|grep supervisord       # 查看是否存在supervisord进程

三、Supervisor 配置

​安装完成后,会生成一个配置文件和一个目录:

配置文件:/etc/supervisor.conf
配置目录:/etc/supervisor.d

全局的配置文件在 /etc/supervosor.conf,具体单个进程的配置不建议全部写进 /etc/supervisor.conf 中,应该在 /etc/supervisor.d/ 目录下创建相应的配置文件,如:

[program:cesi]
command=/usr/local/cesi/venv/bin/python3 /usr/local/cesi/cesi/run.py --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

在使用单位进程配置文件前,需要将 /etc/supervisor.conf 中的

;[include]
;files = /etc/supervisor/config.d/*.ini

修改为:

[include]
files = /etc/supervisor/config.d/*.conf   # 建议用 .conf 作为扩展名

具体配置文件见同目录下的配置文件。

四、启动控制终端

​ 在安装Supervisor当前机器上运行 supervisorctl,即可进入控制终端,界面如下:

可以看到进入控制终端后,默认列出了正在运行中的进程,输入 ? 可以查看控制终端模式下的指令集,输入 exit可以退出,简要指令介绍如下:

# 启动 cesi 进程
start cesi
# 停止 cesi 进程
stop cesi
# 重启 cesi 进程
restart cesi# 更新 supervisor 配置
update
# 重启 supervisor
reload
# 查看 supervisor 状态
status

更多指令不作介绍,具体百度。

也可以不进入控制终端,完成某个进程的启动、停止、重启,也可以查看supervisor的状态,更新配置等,指令如下:

supervisorctl status                   # 查看所管理的服务状态;
supervisorctl start <program_name>     # 启动一个服务;
supervisorctl restart <program_name>   # 重启一个服务(注意:重启服务不会重新加载配置文件);
supervisorctl stop <program_name>      # 关闭一个服务;
supervisorctl update                   # 重新加载配置文件,并重启配置有变动的服务;
supervisorctl reread                   # 重新加载配置文件,但不会重启配置有变动的服务;
supervisorctl reload                   # 重启 Supervisor 服务端;
supervisorctl clear <program_name>     # 清理一个服务的 stdout log;

五、注册为系统服务

将supervisor注册为系统服务,可以随系统启动,免去手工启动的麻烦。

先在 /usr/lib/systemd/system目录下创建 supervisord.service 文件:

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

编辑 supervisord.service,并输入如下内容并保存:

[Unit]
Description=Supervisor daemon[Service]
Type=forking
PIDFile=/var/run/supervisord.pid
ExecStart=/bin/supervisord -c /etc/supervisord.conf
ExecStop=/bin/supervisorctl shutdown
ExecReload=/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s[Install]
WantedBy=multi-user.target

设置为随系统启动,并启动服务

systemctl enable supervisord

查看服务是否成功启动

# systemctl is-enabled supervisord
enabled

成功之后,就可以使用如下命令管理supervisor服务了:

# systemctl stop supervisord
# systemctl start supervisord
# systemctl status supervisord
# systemctl reload supervisord
# systemctl restart supervisord

**注意:**Supervisor只能管理非daemon的进程,也就是说Supervisor不能管理守护进程。否则提示Exited too quickly (process log may have details)异常。需要以前台进程的方式运行。

六、管理界面

出于安全考虑,默认配置是没有开启web管理界面,需要修改supervisord.conf配置文件打开http访权限,将下面的配置:

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

修改成:

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

port:绑定访问IP和端口,这里是绑定的是本地IP和9001端口
username:登录管理界面的用户名
password:登录管理界面的密码

在浏览器中输入 http://127.0.0.1:9001 即可打开管理界面,如下:

1、管理界面的弊端

Supervisor 不支持跨机器的进程监控,一个supervisord只能监控本机上的程序,大大限制了supervisor的使用。不过由于supervisor本身支持xml-rpc,因此也有一些基于supervisor二次开发的多机器进程管理工具。比如:

  • Django-Dashvisor
    Web-based dashboard written in Python. Requires Django 1.3 or 1.4.
  • Nodervisor
    Web-based dashboard written in Node.js.
  • Supervisord-Monitor
    Web-based dashboard written in PHP.
  • SupervisorUI
    Another Web-based dashboard written in PHP.
  • CeSi
    CeSi is a web interface provides manage supervizors from same interface.

官方推荐使用 CeSi 进行集群管理,原文链接:https://github.com/gamegos/cesi/blob/master/README.md。

Supervisor 安装与配置相关推荐

  1. supervisor安装和配置

    supervisor 是由python语言编写.基于linux操作系统的一款服务器管理工具,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能. Supervisor是一个进程管理工具,官方 ...

  2. web linux进程管理,详解Supervisor安装与配置(Linux/Unix进程管理工具)

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...

  3. Supervisor安装与配置(Linux/Unix进程管理工具)

    原文链接:http://blog.csdn.net/xyang81/article/details/51555473 Supervisor(http://supervisord.org/)是用Pyth ...

  4. [转]supervisor 安装、配置、常用命令

    原文: http://www.cnblogs.com/xueweihan/p/6195824.html ------------------------------------------------ ...

  5. Supervisor安装、配置、开启启动

    1.安装Python包管理工具(easy_install) wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - ...

  6. CeSi 安装与配置

    文章目录 CeSi 安装与配置 一.介绍 二.CeSi 安装 三.CeSi 配置 四.CeSi 启动 五.管理界面 CeSi 安装与配置 一.介绍 ​ CeSi(Centralized Supervi ...

  7. Linux 开起启动Supervisor 安装配置

    Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台服务,并监控进程状态,异常退出时能自动重启.它是通过fork/exec的方式把这些被管理的进程当作su ...

  8. supervisor和Nginx安装与配置

    转自GuGoo云之Summary Web服务器Nginx的安装与配置 卸载老版本的Nginx sudo apt-get --purge remove nginx sudo apt-get autore ...

  9. CENTOS7.9安装并配置supervisor服务

    这一段时间,团队负责研发小伙伴们开发的一goland微服务在不确定的时间会挂掉,影响线上调用此服务的稳定性,还没来得及排查服务在不确定的时间偶然挂掉的原因,同时这个golang开发的服务没有加入平滑重 ...

最新文章

  1. 数值比较器实现_伺服操作器FBQA7000销售-老友网
  2. 手机APP新“战场” 手机银行APP成了银行业的定时炸弹?
  3. UNIX进程的创建,进程链和进程扇
  4. 自新建表包含货币金额类型和数量类型时报错问题。
  5. HTML之列表学习-9.23
  6. 为什么重写HashCode()和equal()
  7. jQuery对象与dom对象的转换
  8. 在python中用递归的方法编程_python基础之函数,递归,内置函数
  9. 控制台应用和空项目有什么区别_在公司做的项目和自己在学校做的有什么区别?...
  10. 掘金翻译计划 GitHub Star 破3千--终于等到你
  11. JDBC学习(三、DDL、DML和DQL)
  12. 混响时间测试软件安卓版,混响时间的测量方法资料.pdf
  13. Java获取网络视频封面图片
  14. 分享一个影视解析接口
  15. 鼎利5G测试软件不显示信息,鼎利软件应用 - 4G/5G - 通信人家园 - Powered by C114
  16. 特殊回文数 C++解法
  17. android 连 wpa3路由器,WPA3 和 Wi-Fi Enhanced Open
  18. SharePoint 网站的导入导出
  19. rust中slice panicked at 'byte index 5 is not a char boundary' 问题解决办法
  20. 8.3列表/菜单/文本域标记

热门文章

  1. 解决ie8下background-size不兼容问题
  2. mysql 1265错误_Mysql出现ERROR 1265: Data truncated for
  3. 华为服务器怎么进入系统,服务器怎么进入系统
  4. 分布式 常见的容错机制
  5. S02_CH15_ AXI_OLED 实验
  6. 不想升级,iOS系统自动更新可彻底关闭! 2016-05-23 16:38 更新/自动/on 昨天笔者发布了一篇关于iOS系统总提醒更新,到底要不要升级的文章,不少读者在微信上留言给笔者, iPhon
  7. Ubuntu 修改中文字体教程
  8. HTTP,TCP,UDP,Socket,WebSocket
  9. 模块间通信 --linux
  10. 《转》禅意设计:网络简洁设计的缘起和未来