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

2 篇文章 0 订阅
2 篇文章 0 订阅

第一步 安装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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值