Supervisor通用配置
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
# 下载python
> wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz
# 解压安装包
> tar -xf Python-3.8.2.tar.xz
# 进入目标文件
> cd Python-3.8.2
# 配置安装目录
> ./configure --prefix=/usr/local/python3
# 编译&安装
> make && sudo make install
# 建立软连接:python3,pip3
> ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
> ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
# 删除安装包与文件
> rm -rf Python-3.8.2
> rm -rf Python-3.8.2.tar.xz
2、安装python虚拟环境
# 1、安装工具包
> pip3 install virtualenv
> pip3 install virtualenvwrapper
# 注意:有些解释器无法直接安装virtualenvwrapper包,可能是因为缺少依赖,可以先安装一下下面两个包
> pip3 install pbr
> pip3 install stevedore
# 2、建立虚拟环境软链接
> ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
# 3、配置虚拟环境对应环境变量
> vim ~/.bash_profile
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
# 指定virtualenv的路径
source /usr/local/bin/virtualenvwrapper.sh
# 4、更新配置文件内容
> source ~/.bash_profile
所有的虚拟环境文件都指定存放在~/.virtualenvs 目录
3、创建python虚拟环境
# 1、创建虚拟环境
> mkvirtualenv supervisor_env # 虚拟环境名称
# 2、管理虚拟环境
> workon  # 进入虚拟环境只需要在后面加上虚拟环境名称
# 3、退出虚拟环境
> deactivate
4、supervisor安装
# 安装
> pip install supervisor
# 生成配置文件
> echo_supervisord_conf > supervisord.conf
3、配置supervisor
5、superiord.conf
# 指定socket文件路径
[unix_http_server]
file=/root/work/manager/supervisor/supervisor.sock   ; the path to the socket file
[supervisord]
logfile=/root/work/manager/supervisor/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=/root/work/manager/supervisor/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
[supervisorctl]
serverurl=unix:///root/work/manager/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
# 指定分发所有子进程的配置目录,默认子进程配置文件为ini格式
[include]
files = conf.d/*.ini
6、例:conf.d/onlydaya.ini
将不同分类的子进程单独使用配置文件,便于后期管理。下面的例子是后台启动uwsgi
# 项目名称
[program:onlydata]
# 脚本目录
directory=/root/work/code/python/onlydata
# 脚本执行命令
command=/root/.virtualenvs/onlydata/bin/uwsgi --ini /root/work/code/python/onlydata/onlydata/uwsgi.ini
# 日志输出
stderr_logfile=/root/work/code/python/onlydata/uwsgi.err.log
stdout_logfile=/root/work/code/python/onlydata/uwsgi.out.log
# 脚本运行的用户身份
user=root
stopsignal=INT
# 这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
startsecs=1
4、supervisor常用命令
supervisorctl status        //查看所有进程的状态
supervisorctl stop es       //停止es
supervisorctl start es      //启动es
supervisorctl restart       //重启es
supervisorctl update        //配置文件修改后使用该命令加载新的配置
supervisorctl reload        //重新启动配置中的所有程序
也可以通过supervisorctl进入supervisor的shell界面,直接进行命令操作
补充:
systemctl start supervisord.service     //启动supervisor并加载默认配置文件
systemctl enable supervisord.service    //将supervisor加入开机启动项
Supervisor通用配置的更多相关文章
- Supervisor 的配置与使用
		环境:ubuntu 14.04 lts http://supervisord.org/liunx 下有很多守护进程的工具,如 nohup,screen,supervisor 等,supervisor ... 
- Abp通用配置模块的设计
		引言 约定优于配置,配置趋于灵活 约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处, ... 
- laravel 守护进程Supervisor的配置
		安装Supervisor Supervisor是Linux系统中常用的进程守护程序.如果队列进程queue:work意外关闭,它会自动重启启动队列进程.在Ubuntu安装Supervisor 非常简单 ... 
- .Net Core Linux部署之进程守护 Supervisor 安装配置
		1.Supervisor 安装 //安装easy_install yum install python-setuptools //安装Supervisor easy_install superviso ... 
- Kali Linux-装机后通用配置
		目录 前言 一. 网络优化 更换host 更换dns 添加源 二. 更新系统 三 .安装N卡驱动 四.修复 add-apt-repository 五.安装常用软件 安装apt自带的包 安装第三方的de ... 
- ECharts图表——封装通用配置
		前言 前段时间在做大屏项目,大量用到echarts图表,大屏对设计规范要求比较高,而大屏项目,经常会因为业务方面的原因.或者是数据方面的原因改动UI设计,所有图表的代码也是三天一小改.五天一大改 因此 ... 
- supervisor program配置实例
		program 配置 上面我们已经把 supervisrod 运行起来了,现在可以添加我们要管理的进程的配置文件.可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而 ... 
- supervisor的配置
		看了下文档,比较多.http://www.supervisord.org/ 抱着试试又不会怀孕的心态,trying,碰了几鼻子灰,记录如下, 方便大家 1. 安装 easy_install super ... 
- supervisor安装配置与使用
		supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控.管理进程.常用于管理与某个用户或项目相关的进程. 组成部分supervisord:服务守护进程supervisorctl ... 
随机推荐
- springboot集成jpa操作mybatis数据库
			数据库如下 CREATE TABLE `jpa`.`Untitled` ( `cust_id` bigint() NOT NULL AUTO_INCREMENT, `cust_address` var ... 
- 关于MySQL事务和存储引擎常见FAQ
			1.什么是事务? 事务就是「一组原子性的SQL查询」,或者说一个独立的工作单元.如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询.如果其中有任何一条语句因为崩溃或其他原因无法 ... 
- C# 模型赋值
			/// <summary> /// 模型赋值 /// </summary> /// <param name="target">目标</pa ... 
- python之浅谈编程语言
			一.编程语言的分类 机器语言(低级语言) 可以直接和硬件交互,用0和1和计算机沟通 优点:执行效率高(因为可以直接和计算机沟通) 缺点:开发效率低(都是用0和1进行编码) 汇编语言 同样可以直接和硬件 ... 
- 最快安装AndroidStudio的方法(小歪整理)
			最快安装AndroidStudio的方法(小歪整理)-干货,加速加载和解决无法预览布局文件的等问题 最快安装AndroidStudio的方法(小歪整理) 1.使用解压压缩包的方式安装:android- ... 
- web前端开发_文件/目录/样式/函数等命名规范
			页面的命名规则 统一用翻译的英文命名(推荐) 统一用拼音命名(拼音的简化也可) 如果文件名过长,企业要提前约定一份缩写的规范,如pro—product 例如: 首页—index 产品列表—prolis ... 
- Xor_Sum 题解
			题目 You are given a positive integer \(N(1≦N≦10^{18})\). Find the number of the pairs of integers \(u ... 
- Python爬虫教程(16行代码爬百度)
			最近在学习python,不过有一个正则表达式一直搞不懂,自己直接使用最笨的方法写出了一个百度爬虫,只有短短16行代码.首先安装必背包: pip3 install bs4 pip3 install re ... 
- Python——数据库like模糊查询
			在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%.将在Python中执行的sql语句改为:sql = "SELECT * FROM table_test WHERE va ... 
- 主题博客添加 h5 贴边音乐插件
			前言: 前几日,在逛微博的时候,发现微博主页的左下角有一个贴边的音乐小插件,我顿时就想在自己博客上也弄一个玩玩.当时就想把微博那个移植过来,首先我用谷歌浏览器F12 查看页面源码,和检查元素代码,发现 ... 
