[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、消费日志
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进程管理实现队列常驻进程完成