欢迎各位兄弟 发布技术文章
这里的技术是共享的
好像 只支持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客户端的交互终端,并会列出当前所管理的所有进程。
上图中 配置文件 /etc/supervisor/conf.d/ttoo.cn.conf 里面第一行 指定的program 的名字
输入help可以查看可以执行的命令列表,如果想看某个命令的作用,运行help 命令名称,如:help stop
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管理界面
出于安全考虑,默认配置是没有开启web管理界面,需要修改/etc/supervisord.conf配置文件打开http访权限,将下面的配置
修改成:
port:绑定访问IP和端口,这里是绑定的是本地IP和9001端口
username:登录管理后台的用户名
password:登录管理后台的密码
14) iptables 要通过上一步设置的 9001端口
15) 重启 service supervisord restart