python进程管理工具supervisor的安装与使用教程


Posted in Python onSeptember 05, 2017

前言

在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便。如果有一个工具能够实现每台机器上多个进程的简单高效中心化管理将是非常方便的。于是Supervisord工具应运而生。与Supervisord类似的工具包括monit, daemontools和runit。下面话不多说了,来一起看看详细的介绍吧。

安装

Supervisord是运行在Python环境下的服务监控程序,所以在安装supervisord之前必须有python环境。

yum install python-setuptools
easy_install supervisor

如果安装成功,键入: echo_supervisord_conf,会显示一个superviscord_conf 的配置模板。

这里使用重定向运算符将配置文件定向到/etc路径下(方便管理)

echo_supervisord_conf>/etc/supervisord.conf

配置文件详解

[unix_http_server]
file=/tmp/supervisor.sock ; UNIX socket 文件,supervisorctl 会使用
;chmod=0700 ; socket 文件的 mode,默认是 0700
;chown=nobody:nogroup ; socket 文件的 owner,格式: uid:gid
;[inet_http_server] ; HTTP 服务器,提供 web 管理界面
;port=127.0.0.1:9001 ; Web 管理后台运行的 IP 和端口,如果开放到公网,需要注意安全性
;username=user ; 登录管理后台的用户名
;password=123 ; 登录管理后台的密码
[supervisord]
logfile=/tmp/supervisord.log ; 日志文件,默认是 $CWD/supervisord.log
logfile_maxbytes=50MB ; 日志文件大小,超出会 rotate,默认 50MB
logfile_backups=10 ; 日志文件保留备份数量默认 10
loglevel=info ; 日志级别,默认 info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=false ; 是否在前台启动,默认是 false,即以 daemon 的方式启动
minfds=1024 ; 可以打开的文件描述符的最小值,默认 1024
minprocs=200 ; 可以打开的进程数的最小值,默认 200
; the below 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: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通过 UNIX socket 连接 supervisord,路径与 unix_http_server 部分的 file 一致
;serverurl=http://127.0.0.1:9001 ; 通过 HTTP 的方式连接 supervisord
; 包含其他的配置文件
[include]
files = relative/directory/*.ini ; 可以是 *.conf 或 *.ini

进程Program配置

[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的启动目录
command = gunicorn -c gunicorn.py wsgi:app ; 启动命令,可以看出与手动在命令行启动的命令是一样的
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = leon ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log
; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere

将进程配置添加到supervisord.conf文件中

推荐将各个进程配置放到单独的文件中,然后通过[include]配置项引用

[include]
files = /etc/supervisor/*.conf

supervisor服务启动

运行命令

supervisord -c /etc/supervisord.conf

supervisor服务客户端管理

可以使用supervisord的命令行客户端管理工具supervisorctl,来管理进程。

supervisorctl status
supervisorctl stop usercenter
supervisorctl start usercenter
supervisorctl restart usercenter
supervisorctl reread
supervisorctl update

supervisor web管理界面

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

在浏览器中输入http://127.0.0.1:9001,即可进入web管理界面

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python和php通信乱码问题解决方法
Apr 15 Python
python列表操作实例
Jan 14 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
对pandas中Series的map函数详解
Jul 25 Python
python多线程同步实例教程
Aug 11 Python
Python dict的常用方法示例代码
Jun 23 Python
Python性能分析工具py-spy原理用法解析
Jul 27 Python
浅谈python数据类型及其操作
May 25 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 Python
基于Django模板中的数字自增(详解)
Sep 05 #Python
用python结合jieba和wordcloud实现词云效果
Sep 05 #Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 #Python
python 生成器协程运算实例
Sep 04 #Python
python 文件操作删除某行的实例
Sep 04 #Python
Django数据库操作的实例(增删改查)
Sep 04 #Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 #Python
You might like
PHP的开发框架的现状和展望
2007/03/16 PHP
PHP HTML代码串 截取实现代码
2009/06/29 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
JS中数据结构之栈
2019/01/01 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
Python 高级专用类方法的实例详解
2017/09/11 Python
Django model序列化为json的方法示例
2018/10/16 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
django数据库自动重连的方法实例
2019/07/21 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
公关活动策划方案
2014/05/25 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书