码迷,mamicode.com
首页 > 其他好文 > 详细

supervisor安装和使用

时间:2015-04-29 07:28:49      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:target   blank   

0. 前言

0.1 supervisor简介

Supervisor是用Python实现的一款非常实用的进程管理工具,可以方便的通过命令开启、关闭、重启等操作,而且它管理的进程一旦崩溃会自动重启,但是supervisor管理的进程必须由supervisord来启动,并且管理的程序必要是非Daemon程序,Supervisor会帮你把它转化为Daemon程序,比如想要使用Supervisor来管理Nginx进程,就必须在Nginx配置文件中加入 daemon off让Nginx以非Daemon方式运行。

0.2 软硬件环境

OS:CentOS6.6 x86_64

Python:2.6.6

setuptools:1.4.2

supervisor:3.1.3

1. 安装

1.1 安装setuptools

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz    
tar -xvf setuptools-1.4.2.tar.gz    
cd setuptools-1.4.2    
python setup.py install

1.2 安装python-meld3

yum install python-meld3 -y

1.3 安装supervisor

easy_install supervisor    #安装supervisor

echo_supervisord_conf > /etc/supervisord.conf   #生成配置文件

2. 配置supervisor

修改 /etc/supervisord.conf文件,去掉inet_http_server段的注释,并且改为如下:

[inet_http_server]

port=-0.0.0.0:9001

username=admin

password=123456

这样就可以用admin/123456登录http://YOUR_IP:9001来通过页面进行操作了。

3. 使用supervisor

编写一个测试脚本,用来验证使用过程,脚本名为ping_ip.sh,文件路径/root/ping_ip.sh,内容如下:

#!/bin/bash

while true

do

    ping -c 1 192.168.35.174 >> /tmp/ping.log

    sleep 5

done

说明:每隔5秒钟ping一下192.168.35.174,并将输出写入ping.log。并且需要确保这个脚本一直处于运行状态。

下面演示如何通过supervisor管理这个脚本,并确保其始终处于运行状态。

在/etc/supervisord.conf中写入如下内容:

[program:ping]    #ping是我们自定义的程序名,需要注意program后面的冒号

command=/bin/bash /root/ping_ip.sh #执行的命令,用于启动进程。需要注意的是,这个命令只能是在终端中运行的进程,而不能是守护进程,因为supervisor需要将其作为子进程进行管理。所以像service vsftpd start这样的命令是不行的,不能作为supervisor的子进程进行管理。

process_name=ping #进程名,默认就是program配置的程序名。如果下面的numprocs设置为1,此处就不用设置了;如果numprocs设置为大于1,就需要给每隔子进程设置一个名字了。

numprocs=1 #子进程个数

startsecs=0 #子进程启动多少秒后,如果状态处于running,则认为启动成功

stopwaitsecs=0 #向子进程发送stop信号之后,到系统返回信息给supervisord所等待的最大时间,超过这个时间,supervisord会向该子进程发送一个强制kill的信号

autostart=true #supervisord启动的时候,是否也自动启动这个子进程

autorestart=true #这个是设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的退出码的时候,才会被自动重启。当为true的时候,只要子进程挂掉,将会被无条件的重启

stopsignal=KILL #进程停止信号,可以为TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信号

stdout_logfile=/tmp/ping.log #日志文件路径

stderr_logfile=/tmp/ping.err #错误日志文件路径

1.1 命令行管理

[root@localhost ~]# supervisorctl status #查看supervisor状态    
ping                             RUNNING   pid 32935, uptime 0:00:02    
[root@localhost ~]# supervisorctl stop ping #停止子进程ping    
ping: stopped    
[root@localhost ~]# supervisorctl status    
ping                             STOPPED   Apr 28 06:00 PM    
[root@localhost ~]# supervisorctl start ping #启动子进程ping    
ping: started    
[root@localhost ~]# supervisorctl status    
ping                             RUNNING   pid 33065, uptime 0:00:02

其他用法请查看帮助手册:supervisorctl --help

1.2 图形界面管理

访问:http://192.168.35.174:9001/,输入用户名/密码之后,即可在图形界面上看到的子进程的运行状态,并且可以进行操作。

技术分享

本文出自 “烟花易冷” 博客,转载请与作者联系!

supervisor安装和使用

标签:target   blank   

原文地址:http://yuanhuan.blog.51cto.com/3367116/1639912

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!