laravel8.49安装与使用dingo/api、jwt-auth、phpredis、predis、selasticsearch、laravel-queue-rabbitmq

dingo/api 文档

Dingo版本 Laravel版本 Minimum PHP 版本 支持?
1.x.x Pre 5.6 No
2.x.x 5.6 - 6.x PHP 7.1 - 7.2 No
3.x.x 7.x - 8.x PHP 7.2.5 Yes
  1. 修改laravel的composer.json文件,运行composer update
"require": {
    "dingo/api": "^3.0.0"
}
  1. 生成dingo配置文件

cd /docker/www/shopby # 进入项目目录
php artisan vendor:publish --provider=“Dingo\Api\Provider\LaravelServiceProvider”
使用artisan 命令来发布dingo配置文件

  1. API 自带了两个 Facade,Dingo\Api\Facade\API和Dingo\Api\Facade\Route

Dingo\Api\Facade\API 这个是调度器的 Facade ,并提供了一些好用的辅助方法。
Dingo\Api\Facade\Route 可使用这个 Facade 来获取 API 的当前路由、请求、检查当前路由的名称等。

  1. 修改.env文件,加入下面内容

API_SUBTYPE=shopby # 项目名称
API_PREFIX=api # url前缀
API_VERSION=v1 # 版本
API_DEBUG=true # 调试模式

jwt-auth 文档

  1. 修改laravel的composer.json文件,运行composer update
"require": {
    "tymon/jwt-auth": "^1.0.2"
}
  1. 生成jwt-auth配置文件

cd /docker/www/shopby # 进入项目目录
php artisan vendor:publish --provider=“Dingo\Api\Provider\LaravelServiceProvider”
使用artisan 命令来发布jwt-auth配置文件

  1. 生成密钥

php artisan jwt:secret
在这里插入图片描述

  1. 修改.env文件,加入下面内容:

#php artisan jwt:secret生成的密钥
JWT_SECRET=JZRfB0nk85YF4147sK4plxMeNue56HDn52AIwtluB38c4E3Y3Evwy3y4QhZWWemD

  1. 修改config/auth.php,让框架接下来使用jwt进行身份验证,对文件进行下面修改
'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

...

'guards' => [
    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
],
  1. 因为使用了dingo api,还要再修改config/api.php文件,让dingo也使用jwt进行身份验证
    'auth' => [
        'jwt' => 'Dingo\Api\Provider\JWT'
    ],

predis、phpredis

laravel中默认使用phpredis,需要安装php redis扩展,phpredis安装,推荐使用phpredis
在无法安装扩展情况下可以使用predis,暂时遇到问题无法使用redis stream
composer require predis/predis
在config/database.php 文件中加修改redis配置中的: ‘client’ => env(‘REDIS_CLIENT’, ‘predis’),

elasticsearch

composer require elasticsearch/elasticsearch “7.14.x”
在.env文件中加入: ES_HOSTS=192.168.31.198 # es服务器ip
在config/database.php 文件中加入: ‘elasticsearch’ => [ ‘hosts’ => explode(’,’,env(“ES_HOSTS”))],
在app/Providers/AppServiceProvider.php register函数中注册es容器

public function register()
{
    //在laravel的容器中注册一个es的单例
    $this->app->singleton('es',function (){
        $builder = ESClientBuilder::create()->setHosts(config('database.elasticsearch.hosts'));
        if (app()->environment() === 'local'){
            $builder->setLogger(app('log')->driver());
        }
        return $builder->build();
    });
}

rabbitmq

laravel中使用rabbitmq
composer require vladimir-yuldashev/laravel-queue-rabbitmq
composer require vladimir-yuldashev/laravel-queue-rabbitmq --ignore-platform-reqs # 忽略依赖安装
config/queue.php

#config/queue.php
   'rabbitmq' => [
      'driver' => 'rabbitmq',
      'queue' => env('RABBITMQ_QUEUE', 'default'),
      'connection' => PhpAmqpLib\Connection\AMQPLazyConnection::class,

      'hosts' => [
          [
              'host' => env('RABBITMQ_HOST', '172.17.0.8'),
              'port' => env('RABBITMQ_PORT', 5672),
              'user' => env('RABBITMQ_USER', 'guest'),
              'password' => env('RABBITMQ_PASSWORD', 'guest'),
              'vhost' => env('RABBITMQ_VHOST', '/'),
          ],
      ],

      'options' => [
          'ssl_options' => [
              'cafile' => env('RABBITMQ_SSL_CAFILE', null),
              'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null),
              'local_key' => env('RABBITMQ_SSL_LOCALKEY', null),
              'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true),
              'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null),
          ],
          'queue' => [
              'job' => VladimirYuldashev\LaravelQueueRabbitMQ\Queue\Jobs\RabbitMQJob::class,
          ],
      ],

      /*
       * Set to "horizon" if you wish to use Laravel Horizon.
       */
      'worker' => env('RABBITMQ_WORKER', 'default'),

  ],

.env

#.env
QUEUE_CONNECTION=rabbitmq  # 修改默认使用队列
#下面部分为新增配置
QUEUE_DRIVER=rabbitmq
RABBITMQ_HOST=172.17.0.8
RABBITMQ_PORT=5672
RABBITMQ_USER=rabbitmq
RABBITMQ_PASSWORD=rabbitmq
RABBITMQ_VHOST=my_vhost
RABBITMQ_QUEUE=shopby

php artisan queue:work rabbitmq # php容器中运行监听队列

laravel8.49安装与使用dingo/api、jwt-auth、phpredis、predis、selasticsearch、laravel-queue-rabbitmq_第1张图片
docker搭建rabbitmq容器
php容器中安装amqp扩展
laravel中使用rabbitmq

你可能感兴趣的:(php,laravel,php)