Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240610
  • 博文数量: 52
  • 博客积分: 1492
  • 博客等级: 上尉
  • 技术积分: 554
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 15:54
文章分类
文章存档

2010年(52)

我的朋友

分类: Python/Ruby

2010-08-09 17:23:47

用 Supervisor 管理后台守护进程

 

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

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

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

安装 Supervisor

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

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

easy_install supervisor --prefix=$HOME

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

使用方法: 以 Zine 为例

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

有两个可执行程序 — supervisordsupervisorctl:

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

它们之间的关系就相当于 Apache 的 httpdapachectl.

创建工作目录和配置文件

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

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

我们把配置文件命名为 supervisord.conf (也可以是其它任何文件名, 但 默认自动在当前目录查找该文件, 用 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 = /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:////deploy/supervisor/supervisord.sock

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

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

Note

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

使用 supervisorctl 进行控制

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

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

supervisorctl start all
supervisorctl stop blog
supervisorctl restart blog2

结束语

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

阅读(13722) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~