首页 > 代码库 > supervisor 3.0 配置和使用

supervisor 3.0 配置和使用

为什么要使用supervisor 3.0?
使用场景:后台服务,进程管理。
使用php 开发web app时,可能某个脚本会一直需要运行在后台
比较典型的php 的 gearman worker
一般情况下并发量不大的情况下一个 worker足够处理任务列表,
当并发上去之后一个worker 就处理不了,可能需要多个进程去处理, 甚至需要多台服务器。
那我们就需要这个后台服务可以开启多个进程,进程出错,需要重启进程等等..
后台服务可以通过 pcntl_fork 来实现,实现多个进程也是使用相关的函数。。
后或者使用linux 的 nohup  cmd & 这样可以退出终端,脚本还在运行, 更高级一点就是
使用 shell 脚本来启动多个后台服务。
详细一点就不说了。。这时一会发现我们要搞定这些事,还挺复杂的,对unix 多进程编程要了解,
需要自己写,想想多累。。如果是学习编程基础和系统原理,还是建议大家多了解一下,
但是在本着为公司的产品性能,稳定,不要重复造轮子的原则,这时supervisor 
就可以解决以上的问题, 使用supervisor 请仔细查看系统安装的版本
supervisor 2.x 的版本是不支持多进程的。。 3.0 以后是支持多进程,很多服务器的包不是最最新版本。
还可以设置启动进程数目。。 如果某个进程内存泄漏后者异常退出,它会自动平滑重启一个进程,方便
管理进程。
gearman 和 supervisor 3.0  就是绝配.

好吧开始吧。。
supervisor 3.x 需要 python 2.7
所以先更新python
1.将python 2.6 更新 python 2.7.X, 参考:http://blog.csdn.net/jcjc918/article/details/11022345
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
tar zxvf Python-2.7.8.tgz
./configure
make all
make install
make clean
make distclean

python -V 
#/usr/local/bin/python2.7 -V  

#mv /usr/bin/python /usr/bin/python2.6.6  
#ln -s /usr/local/bin/python2.7 /usr/bin/python
python -V  

vim /etc/yum

先安装setuptool
wget https://bootstrap.pypa.io/ez_setup.py -O - | python

echo_supervisord_conf  >/etc/supervisord.conf

在 cenos os 上 还有其他软件可能还需要 python 2.6 比如:yum , 所以需要指定yum 使用python 2.6版本

根据官方文档,在github 上面初始化脚本 :https://github.com/Supervisor/initscripts
选择一个脚本
先找到 supervisord 文件在哪?
whereis supervisord 
修改脚本的DEAMON 变量即可,
把文件放到 /etc/init.d/目录下
设置可执行
chmod +x supervisord

设置开机启动
chkconfig --add supervisord
chkconfig supervisord on


supervisor 3.0 基本配置:
[program:5secs-top-background]
command=/usr/local/php-5.5.16/bin/php /data/wwwroot/service/TopWorker.php
autostart=true
autorestart=true
exitcodes=0,2
numprocs=2
process_name=%(program_name)s_%(process_num)s

[program:5secs-notice-client]
command=/usr/local/php-5.5.16/bin/php /data/wwwrootservice/NoticeListServer.php
autostart=true
autorestart=true

[program:5secs-notice-bgServer]
command                 = /usr/local/php-5.5.16/bin/php /data/wwwroot/service/GetuiBackgroudServer.php
autostart               = true
autorestart             = true
numprocs                = 5
numprocs_start          = 2
process_name            = %(program_name)s_%(process_num)s


最后,句子写的不是很流畅,谅解啊。

supervisor 3.0 配置和使用