好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

supervisor 管理后台进程

supervisor 管理后台进程

supervisor 管理后台进程 文章分类: Python编程

参考这篇文章  

加上一些notes: 

1 生成默认conf文件: echo_supervisord_conf > ... 

2 启动:superviserd -c 配置文件path 
     eg:supervised -c t.ini 
     配置文件ini格式 

3 控制:supervisorctrl -i 
     进入交互模式 

用  Supervisor  管理后台守护进程

一些虚拟主机支持跑后台守护程序, 比如  Webfaction .

在虚拟主机中管理后台守护程序没有  VPS  那么方便,  VPS  是可以使用 root 权限的, 但虚拟主机则不能.

要更方便的管理后台进程, 通常需要借助一些辅助工具. 常用的管理工具有  runit ,  daemontools  以及  Supervisor . 其中以  Supervisor  最为易用, 功能也很完善.

安装  Supervisor

Supervisor  是一个  Python  程序, 按照  官方文档安装  就可以了.

稍加注意的是, 虚拟主机用户需要安装到他的用户目录:

easy_install  supervisor  --prefix=$HOME

安装完成后, 确保  $ HOME /bin  目录在  $ PATH  环境变量中并已经生效.

使用方法: 以 Zine 为例

Zine  可以作为后台守护程序运行, 通过  Supervisor  进行 启动/重启/失败自动重启 等控制.

Supervisor  有两个可执行程序 —  supervisord  和  supervisorctl :

supervisord  是后台管理服务器, 用来依据配置文件的策略管理后台守护进程; supervisorctl  用于管理员向后台管理程序发送 启动/重启/停止 等指令;

它们之间的关系就相当于 Apache 的  httpd  和  apachectl .

创建工作目录和配置文件

首先需要创建一个  Supervisor  的工作目录, 如:  $ HOME /deploy/ supervisor / , 用来存放错误日志输出, pid 文件, socket 文件, 配置文件等.

接着是创建  配置文件 , 配置文件用来指示  Supervisor  有哪些进程需要管理, 以及管理策略.

我们把配置文件命名为  supervisord.conf  (也可以是其它任何文件名, 但  Supervisor  默认自动在当前目录查找该文件, 用  supervisord.conf  会为以后管理提供方便):

[supervisord]
logfile = %(here)s/supervisord.log
loglevel = warn
pidfile = %(here)s/supervisord.pid
directory = %(here)s/
childlogdir = %(here)s/childlog

[unix_http_server]
file = <YOU-HOME-PATH>/deploy/ supervisor /supervisord.sock

[rpcinterface: supervisor ]
; This section is always necessary because  supervisor  uses RPC internally.
 supervisor .rpcinterface_factory =  supervisor .rpcinterface:make_main_rpcinterface

[supervisorctl]
; Must match settings in 'unix_http_server'
serverurl = unix:///<YOU-HOME-PATH>/deploy/ supervisor /supervisord.sock

[program:blog]
command = <YOU-HOME-PATH>/deploy/zine/bin/ python  /home/yospaly/deploy/zine/scripts/server -a 127.0.0.1 --no-reloader --no-debugger --threaded -p 6666 -I <YOU-HOME-PATH>/deploy/blog/

[program:blog2]
command = <YOU-HOME-PATH>/deploy/zine/bin/ python  /home/yospaly/deploy/zine/scripts/server -a 127.0.0.1 --no-reloader --no-debugger --threaded -p 8888 -I <YOU-HOME-PATH>/deploy/blog2/
配置文件的第一段用来配置  supervisord  后台管理服务器一些输出文件的路径; 第二段用来打开  supervisord  内部的 Socket 服务, 以便接受和处理来自控制程序 ( supervisorctl ) 请求; 第三段是必备的, 详见注释; 第四段告诉控制程序 ( supervisorctl ) 通过什么途径和  supervisord  通信;

Note

Webfaction  的用户不能随意指定  Zine  的端口号, 要使用在 Webfaction 控制面板添加新的 “Custom app (listening on port)” 后获得的一个特定端口号.

使用 supervisorctl 进行控制

在  supervisord.conf  所在的工作目录执行  supervisord  运行后台管理服务器, 如果运行失败请查看工作目录下的错误日志;

supervisord  跑起来后,  supervisorctl  就可以方便的手工管理守护程序了:

supervisorctl start all
supervisorctl stop blog
supervisorctl restart blog2

结束语

Supervisor  是一个易用, 又不失强大的工具, 这里只涉及了  Supervisor  最基本的使用, 还有很多更加高级和有用的功能未能覆盖, 可以进一步参考  Supervisor  官方文档 .

2009-05-14, Thursday 17:42 PM |  0 comments  |  0 pingbacks  | Tags:  supervisor ,  virtual host ,  webfaction ,  zine

查看更多关于supervisor 管理后台进程的详细内容...

  阅读:33次