Bootstrap

think-queue配合supervisor常驻进程遇到的一些坑

[unix_http_server]
file=/var/supervisor/run/supervisor.sock   ; the path to the socket file
chmod=0777                 ; socket file mode (default 0700)
;chown=root:supervisor       ; socket file uid:gid owner
;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=*: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)

[supervisord]
logfile=/var/supervisor/log/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB        ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10           ; # of main logfile backups; 0 means none, default 10
loglevel=info                ; log level; default info; others: debug,warn,trace
pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false               ; start in foreground if true; default false
minfds=1024                  ; min. avail startup file descriptors; default 1024
minprocs=200                 ; min. avail process descriptors;default 200
;umask=022                   ; process file creation umask; default 022
;user=supervisord            ; setuid to this UNIX account at startup; recommended if root
;identifier=supervisor       ; supervisord identifier, default is 'supervisor'
;directory=/tmp              ; default is not to cd during start
;nocleanup=true              ;

[supervisorctl]
;[program:queue_worker] ;项目名称

#这里需要对应上面unix_http_server:file的目录不然运行不起来
serverurl=unix:///var/supervisor/run/supervisor.sock  ; use an http:// url to specify an inet socket
;serverurl=http://47.112.247.95:9001 ; use an http:// url to specify an inet socket


[include]      //这里是引入了program的配置目录
;files = relative/directory/*.ini
files = /var/supervisor/conf/*.conf     **需要注意的是这里引入的是自定义的目录

[rpcinterface:supervisor]  //访问9001面板必须使用
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

 

[supervisord]               //报错需要引用supervisord
nodaemon=true

#这里是最容易出错的地方 需要先定义绝对路径目录位置然后执行command命令

[program:queue_worker] ;项目名称
;user = root          ; 用哪个用户启动
;command =php /www/wwwroot/jikeyue.com think queue:work --queue PUBLISHED localhost:81; 启动命令 queueName就是队列名
directory=/www/wwwroot/jikeyue.com/ ; 程序的启动目录,项目根目录的上一级
command=/usr/bin/php -f /www/wwwroot/jikeyue.com/think queue:work --daemon --queue PUBLISHED --tries 10;多模块有逗号分开
process_name=%(program_name)s_%(process_num)02d
numprocs = 1         ; 开启的进程数量
autostart = true     ; 在 supervisord 启动的时候也自动启动
startsecs = 50        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true   ; 程序异常退出后自动重启
startretries = 10     ; 启动失败自动重试次数,默认是 3
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
;stdout_logfile_maxbytes = 50MB  ; stdout 日志文件大小,默认 50MB
;stdout_logfile_backups = 20     ; stdout 日志文件备份数
; stdout 日志文件,需要手动创建目录(supervisord 会自动创建日志文件)
;environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
stdout_logfile = /var/supervisor/log/query_job.log
loglevel=info
daemonize=no      


目录

#这里是最容易出错的地方 需要先定义绝对路径目录位置然后执行command命令

1、supervisor进程开启日志:

2、运行日志:

3、消费日志​


 

1、supervisor进程开启日志:

2、运行日志:

3、消费日志

 

supervisord命令:supervisord -c /etc/supervisord.conf

supervisorctl命令:

1、supervisorctl update

2、supervisorctl reload

3、supervisorctl status

4、supervisorctl start 《进程name》

常见错误:

no route or such file<sock.py>     解决:serverurl要与unix_http_server:file路径一致

9001无法访问 防火墙、端口是否开启 以及inet_http_server是否开启

backoff、fatle错误都是以directory路径不对导致 且command尽量以绝对路径访问

至此think-queue消息队列结合supervisor进程管理实现队列常驻进程完成

 

;