1、简介

supervisor是python开发的一个进程管理工具,可以将一个普通的命令行进程变为后台的守护进程,并且监控进程的运行状态,如果因为异常退出的时候会自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

  • supervisord

运行superior的时候会启动一个进程superiord,他主要是负责启动所管理的进程,并且将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃的时候自动重启

  • supervisorctl

它是supervisor的命令行管理工具,可以执行stop,start,restart,status,update等指令,来对这些子进程进行管理。

supervisor是所有进程的父进程,管理所有的子进程,supervisor以子进程的PID来管理子进程,当子进程异常退出的时候supervisor可以收到相应的信号量

2、安装supervisor

因为supervisor是基于python来运行的,所以我们的服务器上必须有python环境,但是如果你服务器上跑的是django或者其他的python项目必然基于python环境,如果supervisor管理的后台服务比较多的话肯定会有一些影响,所以supervisor的安装会创建一个新的虚拟环境。

1、安装Python3.8.2

  1. # 下载python
  2. > wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz
  3. # 解压安装包
  4. > tar -xf Python-3.8.2.tar.xz
  5. # 进入目标文件
  6. > cd Python-3.8.2
  7. # 配置安装目录
  8. > ./configure --prefix=/usr/local/python3
  9. # 编译&安装
  10. > make && sudo make install
  11. # 建立软连接:python3,pip3
  12. > ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
  13. > ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
  14. # 删除安装包与文件
  15. > rm -rf Python-3.8.2
  16. > rm -rf Python-3.8.2.tar.xz

2、安装python虚拟环境

  1. # 1、安装工具包
  2. > pip3 install virtualenv
  3. > pip3 install virtualenvwrapper
  4. # 注意:有些解释器无法直接安装virtualenvwrapper包,可能是因为缺少依赖,可以先安装一下下面两个包
  5. > pip3 install pbr
  6. > pip3 install stevedore
  7. # 2、建立虚拟环境软链接
  8. > ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
  9. # 3、配置虚拟环境对应环境变量
  10. > vim ~/.bash_profile
  11. export WORKON_HOME=$HOME/.virtualenvs
  12. export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
  13. # 指定virtualenv的路径
  14. source /usr/local/bin/virtualenvwrapper.sh
  15. # 4、更新配置文件内容
  16. > source ~/.bash_profile
  17. 所有的虚拟环境文件都指定存放在~/.virtualenvs 目录

3、创建python虚拟环境

  1. # 1、创建虚拟环境
  2. > mkvirtualenv supervisor_env # 虚拟环境名称
  3. # 2、管理虚拟环境
  4. > workon # 进入虚拟环境只需要在后面加上虚拟环境名称
  5. # 3、退出虚拟环境
  6. > deactivate

4、supervisor安装

  1. # 安装
  2. > pip install supervisor
  3. # 生成配置文件
  4. > echo_supervisord_conf > supervisord.conf

3、配置supervisor

5、superiord.conf

  1. # 指定socket文件路径
  2. [unix_http_server]
  3. file=/root/work/manager/supervisor/supervisor.sock ; the path to the socket file
  4. [supervisord]
  5. logfile=/root/work/manager/supervisor/supervisord.log ; main log file; default $CWD/supervisord.log
  6. logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB
  7. logfile_backups=10 ; # of main logfile backups; 0 means none, default 10
  8. loglevel=info ; log level; default info; others: debug,warn,trace
  9. pidfile=/root/work/manager/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid
  10. nodaemon=false ; start in foreground if true; default false
  11. silent=false ; no logs to stdout if true; default false
  12. minfds=1024 ; min. avail startup file descriptors; default 1024
  13. minprocs=200 ; min. avail process descriptors;default 200
  14. [supervisorctl]
  15. serverurl=unix:///root/work/manager/supervisor/supervisor.sock ; use a unix:// URL for a unix socket
  16. # 指定分发所有子进程的配置目录,默认子进程配置文件为ini格式
  17. [include]
  18. files = conf.d/*.ini

6、例:conf.d/onlydaya.ini

将不同分类的子进程单独使用配置文件,便于后期管理。下面的例子是后台启动uwsgi

  1. # 项目名称
  2. [program:onlydata]
  3. # 脚本目录
  4. directory=/root/work/code/python/onlydata
  5. # 脚本执行命令
  6. command=/root/.virtualenvs/onlydata/bin/uwsgi --ini /root/work/code/python/onlydata/onlydata/uwsgi.ini
  7. # 日志输出
  8. stderr_logfile=/root/work/code/python/onlydata/uwsgi.err.log
  9. stdout_logfile=/root/work/code/python/onlydata/uwsgi.out.log
  10. # 脚本运行的用户身份
  11. user=root
  12. stopsignal=INT
  13. # 这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
  14. startsecs=1

4、supervisor常用命令

  1. supervisorctl status //查看所有进程的状态
  2. supervisorctl stop es //停止es
  3. supervisorctl start es //启动es
  4. supervisorctl restart //重启es
  5. supervisorctl update //配置文件修改后使用该命令加载新的配置
  6. supervisorctl reload //重新启动配置中的所有程序

也可以通过supervisorctl进入supervisor的shell界面,直接进行命令操作

补充:

  1. systemctl start supervisord.service //启动supervisor并加载默认配置文件
  2. systemctl enable supervisord.service //将supervisor加入开机启动项

Supervisor通用配置的更多相关文章

  1. Supervisor 的配置与使用

    环境:ubuntu 14.04 lts  http://supervisord.org/liunx 下有很多守护进程的工具,如 nohup,screen,supervisor 等,supervisor ...

  2. Abp通用配置模块的设计

    引言 约定优于配置,配置趋于灵活 约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处, ...

  3. laravel 守护进程Supervisor的配置

    安装Supervisor Supervisor是Linux系统中常用的进程守护程序.如果队列进程queue:work意外关闭,它会自动重启启动队列进程.在Ubuntu安装Supervisor 非常简单 ...

  4. .Net Core Linux部署之进程守护 Supervisor 安装配置

    1.Supervisor 安装 //安装easy_install yum install python-setuptools //安装Supervisor easy_install superviso ...

  5. Kali Linux-装机后通用配置

    目录 前言 一. 网络优化 更换host 更换dns 添加源 二. 更新系统 三 .安装N卡驱动 四.修复 add-apt-repository 五.安装常用软件 安装apt自带的包 安装第三方的de ...

  6. ECharts图表——封装通用配置

    前言 前段时间在做大屏项目,大量用到echarts图表,大屏对设计规范要求比较高,而大屏项目,经常会因为业务方面的原因.或者是数据方面的原因改动UI设计,所有图表的代码也是三天一小改.五天一大改 因此 ...

  7. supervisor program配置实例

    program 配置 上面我们已经把 supervisrod 运行起来了,现在可以添加我们要管理的进程的配置文件.可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而 ...

  8. supervisor的配置

    看了下文档,比较多.http://www.supervisord.org/ 抱着试试又不会怀孕的心态,trying,碰了几鼻子灰,记录如下, 方便大家 1. 安装 easy_install super ...

  9. supervisor安装配置与使用

    supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控.管理进程.常用于管理与某个用户或项目相关的进程. 组成部分supervisord:服务守护进程supervisorctl ...

随机推荐

  1. 基于flink和drools的实时日志处理

    1.背景 日志系统接入的日志种类多.格式复杂多样,主流的有以下几种日志: filebeat采集到的文本日志,格式多样 winbeat采集到的操作系统日志 设备上报到logstash的syslog日志 ...

  2. Python实用笔记 (6)函数

    绝对值 >>> abs(100) 100 >>> abs(-20) 20 max()可以接收任意多个参数,并返回最大的那个: >>> max(1, ...

  3. 部署rabbitMQ镜像集群实战测试

    部署rabbitMQ镜像集群 版本信息 rabbit MQ: 3.8.5 Erlang: 官方建议最低21.3 推荐22.x 这里用的是23 环境准备 主机规划 主机 节点 172.16.14.3 磁 ...

  4. (win7) 在IIS6.0 中配置项目

    1.进入IIS管理器 右击“计算机”->管理->服务和应用程序->Internet信息服务(IIS)管理器 2.将项目加入IIS中 网站->右击“默认网站”->添加虚拟目 ...

  5. 安装pymysql模块及使用

    安装pymysql模块: https://www.cnblogs.com/Eva-J/articles/9772614.html file--settings for New Projects---P ...

  6. CentOS/RHEL 6.4/5.9 安装 Adobe Flash Player 11.2

    1.root登录: $ su 2.安装 Adobe YUM Repository RPM package X86_64 ________________________________________ ...

  7. MACOS使用VScode进行C语言编程

    [B站有同步视频教程] 安装VScode 从官网下载vscode安装https://code.visualstudio.com/ 安装code runner插件 配置code runner从终端输出 ...

  8. css可以修改超链接颜色吗?

    超链接a标签大家都应该很熟悉,这篇文章主要的讲的是a标签的基础css样式设置,下面我们来看一下css修改超链接颜色的方法. css可以使用下面几个伪类来设置超链接: a:link :是未被访问的样式, ...

  9. 链表中倒数第k个节点(剑指offer-14)

    /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ ...

  10. JVM 专题十七:垃圾回收(一)简述

    1. 什么是垃圾 1.1 C++与Java 1.2 概述 垃圾收集,不是Java语言的伴生产物.早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生. 关于垃圾收集有三个经典问题 ...