ubuntu学习笔记(4)之laravel使用supervisor实现异步队列

xiaoxiao2021-02-28  75

第一步 安装redis 此处推荐一篇详细的博文 Ubuntu14.04安装redis和简单配置

第二步 修改项目配置

    在学习笔记(2)中已经新建的test项目

    进入到项目文件根目录 cd /var/www/test

    vim .env 添加下面配置

    CACHE_DRIVER=redis       //缓存默认驱动     SESSION_DRIVER=redis   //session默认驱动     QUEUE_DRIVER=redis      //队列默认驱动     REDIS_HOST=192.168.10.147     REDIS_PORT=6379     REDIS_DATABASE=0     REDIS_PASSWORD=root     REDIS_QUEUE_HOST=127.0.0.1     REDIS_QUEUE_PORT=6379     REDIS_QUEUE_DATABASE=1     REDIS_QUEUE_PASSWORD=root

第三步 修改nginx配置文件

    新增并编辑配置文件 vim /etc/nginx/conf.d/lipy.conf

server {     listen 80;     server_name lipy.cc;                                                            #项目名 记得添加到本地的hosts文件中     access_log /data/logs/nginx/lipy.cc.access.log main;         #项目 访问日志     error_log  /data/logs/nginx/lipy.cc.error.log;                          #项目错误日志     index index.php;                                                                    #默认解析文件     root /var/www/test/public;                                                     #项目目录     location /                                   {         try_files $uri $uri/ /index.php?$args;     }     location ~ ^(.+.php)(.*)$ {                                                              fastcgi_split_path_info ^(.+.php)(.*)$;                  include fastcgi.conf;                                                          # 此文件 须执行 cp /etc/nginx/fastcgi_params /etc/nginx/fastcgi.conf         fastcgi_pass unix:/run/php/php7.0-fpm.sock;                  #特别注意 此处的fastcgi_pass 配置取自 /etc/php/7.0/fpm/pool.d/www.conf 里面的listen 另外记得修改www.conf 里面的user和group 改为你你当前的用户我是lipy (不要改为root,没啥用)         fastcgi_index index.php;         fastcgi_param PATH_INFO $fastcgi_path_info;     } }

     配置完成后,新建日志文件的目录,并给相关用户(我的用户是lipy)权限,此处/run/php/php7.0-fpm.sock 的权限也需改为相关用户的(我的用户是lipy,系统默认是www-data),重启nginx  service nginx restart

第四步 修改项目配置

    刚修改了项目的 .env 文件,现在需要把config/database.php文件最下面的redis的配置改为

    'redis' => [         'cluster' => false,         'default' => [             'host'     => env('REDIS_HOST', '127.0.0.1'),             'port'     => env('REDIS_PORT', '6379'),             'database' => env('REDIS_DATABASE', '0'),             'password' => env('REDIS_PASSWORD', 'root'),         ],         'redis_queue' => [                 'host'     => env('REDIS_QUEUE_HOST', '127.0.0.1'),                 'port'     => env('REDIS_QUEUE_PORT', 6379),                 'database' => env('REDIS_QUEUE_DATABASE', 1),                 'password' => env('REDIS_QUEUE_PASSWORD', ''),                 'parameters'=>[                         'password' => env('REDIS_QUEUE_PASSWORD', '')                 ]         ],     ], 且修改 config/queue.php 文件中的connections配置,该配置中新增

        'action_log' => [             'driver' => 'redis',                       //用redis驱动             'connection' => 'redis_queue',  //用database.php文件中的redis_queue             'queue'  => 'action_log',            //队列名称             'expire' => 600,                         //过期时间         ],

添加一个异步写日志的任务 对应的名称来自 学习笔记3 中的配置program

第五步 laravel添加队列任务

注:期间遇到redis有密码无法访问情况。如下图

执行

php artisan queue:listen  开启监听就行了

注:执行队列需要先创建队列失败数据表

1、进入项目根目录

执行php artisan queue:failed-table 创建一个数据表执行文件

执行php artisan migrate --path=database/migrations 指定执行目录

执行 php artisan up 创建表

2、如果是执行队列报 No handler registered for command laravel 这个错误

解决办法,Job类文件引入 use Illuminate\Contracts\Bus\SelfHandling;

且类class ActionLogJob extends Job implements SelfHandling

转载请注明原文地址: https://www.6miu.com/read-29673.html

最新回复(0)