centos6 think-queue 配合 supervisor实现消息队列

主要目的

使用thinkphp框架自带的queue扩展,实现消息队列服务,并使用supervisor保护进程。

环境准备

  • centos6,centos6与centos7在某些地方存在些许差异,本次使用的是6
  • thinkphp主框架,这里使用的是5.1.*版本
  • think-queue扩展,通过composer安装,注意,不同版本对主框架版本要求也有所区别,这里为了对应主框架的5.1版本,所以指定版本为2.0.4
    composer create-project topthink/think 2.0.4
  • Redis , 虽然支持使用数据库做为存储环境,但是并不推荐,这里依然使用Redis,具体安装方式可参看其他教程。
  • python
  • supervisor 

文档参考

安装supervisor

  1. 获取supervisor包
    wget https://pypi.python.org/packages/80/37/964c0d53cbd328796b1aeb7abea4c0f7b0e8c7197ea9b0b9967b7d004def/supervisor-3.3.1.tar.gz

     

  2.  

    解压supervisor-3.3.1.tar.gz 并安装

     

     

    tar zxvf supervisor-3.3.1.tar.gz && cd supervisor-3.3.1
    
    python setup.py install
    
        

    【可能报错】:ImportError: No module named setuptools

    【解决办法】:没有setuptools的模块,说明python缺少这个模块,那我们只要安装这个模块即可解决此问题

    wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
    
    tar zxvf setuptools-0.6c11.tar.gz && cd setuptools-0.6c11
    
    python setup.py build
    
    python setup.py install

     

  3. 创建supervisor的配置文件

    echo_supervisord_conf > /etc/supervisord.conf

     

  4.  在配置文件底部新增
    [program:luna_queue] ;项目名称
    directory = /www/wwwroot/luna ; 程序的启动目录
    command = php think queue:listen --queue mainQueue  ; 启动命令
    process_name=%(program_name)s_%(process_num)02d
    numprocs = 3           ; 开启的进程数量
    autostart = true     ; 在 supervisord 启动的时候也自动启动
    startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
    autorestart = true   ; 程序异常退出后自动重启
    startretries = 3     ; 启动失败自动重试次数,默认是 3
    user = www          ; 用哪个用户启动
    redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
    stdout_logfile_maxbytes = 50MB  ; stdout 日志文件大小,默认 50MB
    stdout_logfile_backups = 20     ; stdout 日志文件备份数
    ; stdout 日志文件,需要手动创建目录(supervisord 会自动创建日志文件)
    stdout_logfile = /www/wwwroot/luna/runtime/log/queue_worker.log
    loglevel=info

     


开启supervisord服务

# supervisord -c /etc/supervisord.conf

更新新的配置到supervisord

# supervisorctl update

重新启动配置中的所有程序

# supervisorctl reload

启动某个进程(program_name=你配置中写的程序名称)

# supervisorctl start program_name

查看正在守候的进程

# supervisorctl

重启某一进程 (program_name=你配置中写的程序名称)

# supervisorctl restart program_name

停止全部进程

# supervisorctl stop all

查看supervisor是否启动成功

# ps -ef|grep supervisord

终止supervisor进程

# kill -s 9 端口号


如果遇到报错,相关报错详情一般可以在对应日志(1.supervisor运行日志与2.需要守护的进程的运行日志)中找到,对症下药即可,日志目录在配置文件中可以看到默认配置,也可以重新指定。如果报错信息很少,比如守护进程日志里只提示到什么遇到致命错误关闭过快然后就没了,推荐更换supervisor的安装方式=L=,我就在这折腾了好几天...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值