欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

CentOS 安装 supervisor 并且 配置 laravel 队列自己亲自做的 有大用 有大大用 有大大大用

好像 只支持python2

1)先安装 Python 的 easy_install,再通过 easy_install 安装 supervisor

# yum install python-setuptools # easy_install supervisor

2)生成配置文件,并建立相应目录,管理 supervisor 启动进程

# echo_supervisord_conf > /etc/supervisord.conf # mkdir -p /etc/supervisor/conf.d/

3)编辑 /etc/supervisord.conf,修改 [include] 区块内容: *.conf 就是放管理的进程

[include] files = /etc/supervisor/conf.d/*.conf

4)编辑(或创建) 服务启动脚本 vi /etc/rc.d/init.d/supervisord  

内容开始处---------------

#!/bin/bash # # supervisord   This scripts turns supervisord on # # Author:       Mike McGrath <mmcgrath@redhat.com> (based off yumupdatesd) # # chkconfig:    - 95 04 # # description:  supervisor is a process control utility.  It has a web based #               xmlrpc interface as well as a few other nifty features. # processname:  supervisord # config: /etc/supervisor/supervisord.conf # pidfile: /var/run/supervisord.pid # # source function library . /etc/rc.d/init.d/functions RETVAL=0 start() {    echo -n $"Starting supervisord: "    daemon "supervisord -c /etc/supervisor/supervisord.conf "    RETVAL=$?    echo    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord } stop() {    echo -n $"Stopping supervisord: "    killproc supervisord    echo    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/supervisord } restart() {    stop    start } case "$1" in  start)    start    ;;  stop)    stop    ;;  restart|force-reload|reload)    restart    ;;  condrestart)    [ -f /var/lock/subsys/supervisord ] && restart    ;;  status)    status supervisord    RETVAL=$?    ;;  *)    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"    exit 1 esac exit $RETVAL


内容结束处---------------

5) 把 /etc/rc.d/init.d/supervisord文件,修改文件权限为755,并设置开机启动

    chmod 755 /etc/rc.d/init.d/supervisord     chkconfig supervisord on


6)  重启 启动 停止 状态 命令  

    service supervisord restart 

    service supervisord start 

    service supervisord stop 

    service supervisord status 

7 ) supervisor安装完成后会生成三个执行程序:supervisord、supervisorctl、echo_supervisord_conf  (见第2步聚),分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。

8) supervisord -c /etc/supervisord.conf  //启动supervisor

supervisorctl //打开命令行

ctl中: help //查看命令

ctl中: status //查看状态


9)监视(监听)某一个网站 http://ttoo.cn 的队列 在  /etc/supervisor/conf.d/ 目录下 建一个 conf文件

比如 vi  /etc/supervisor/conf.d/ttoo.cn.conf       (ttoo.cn是域名吧)

内容开始------

[program:ttoo.cn]

process_name=%(program_name)s_%(process_num)02d

command=/www/wdlinux/phps/56/bin/php /home/wwwroot/ttoo_cn/public_html/artisan queue:work connection --sleep=3 --tries=3 --daemon

autostart=true

autorestart=true

user=www

numprocs=8

redirect_stderr=true

stdout_logfile=/home/wwwroot/ttoo_cn/public_html/storage/logs/worker.log

内容结束------



php artisan queue:work connection --daemon --sleep=3 --tries=3      (--daemon可以放到这一行的最后,也就是顺序无所谓)
它的意义是 监视队列,  tries失败时最大尝试3次,队列上没有任务时,sleep睡眠3秒,queue:work包含一个daemon,选项来强制队列 worker持续处理任务而不必重新启动框架
connection
是连接名,可以在 config/queue.php 中 查看名称

numprocs=8 表示开启了8个进程

user=www 用户为 www用户

stdout_logfile 为标准输出日志

autostart=true 自动启动

autorestart=true 自动重新启动(重启)

redirect_stderr=true 把stderr重定向到stdout


10) 运行supervisord,查看是否生效,执行以下命令:

  supervisord -c /etc/supervisord.conf 
     (Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  
       Shut this program down first before starting supervisord.
      For help, use /usr/bin/supervisord -h 意思是 已经在监听  我们重启吧 service supervisord restart
)
 ps -ef | grep ttoo.cn (查这个进行吧,看这个进程是否已经启动)


12) 控制进程


第一个:交互终端

supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。

image.png

上图中 配置文件 /etc/supervisor/conf.d/ttoo.cn.conf 里面第一行 指定的program 的名字

输入help可以查看可以执行的命令列表,如果想看某个命令的作用,运行help 命令名称,如:help stop

image.png

stop tton.cn   (如果有几个进程的话 这里可能应是  stop tton.cn:tton.cn_00 ) // 表示停止 tton.cn 进程

stop all     // 表示停止所有进程

// ...

第二个: bash终端

    supervisorctl status

    supervisorctl stop tomcat

    supervisorctl start tomcat

    supervisorctl restart tomcat

    supervisorctl reread

    supervisorctl update

第三个: 见  Supervisor重新加载配置启动新的进程 /node-admin/11495/


13) Web管理界面

image.png

   出于安全考虑,默认配置是没有开启web管理界面,需要修改/etc/supervisord.conf配置文件打开http访权限,将下面的配置

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

修改成:

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001          ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))

port:绑定访问IP和端口,这里是绑定的是本地IP和9001端口 

username:登录管理后台的用户名 

password:登录管理后台的密码

14) iptables  要通过上一步设置的 9001端口

15) 重启 service supervisord restart


普通分类: