Redis / Homestead / Laravel 7 — отказано в подключении

#php #laravel #testing #redis #homestead

#php #laravel #тестирование #redis #homestead

Вопрос:

Я пытаюсь заставить Redis работать, следуя за Let’s build форум с TDD series. Я добрался до эпизода 66, в котором представлен Redis, и написал первый тест … а затем бум, он взрывается. Я много искал в Google, но ответы, похоже, не совпадают.

Я использую homestead, и поэтому redis должен быть установлен в среде — с помощью Vagrant box в Windows.

Я установил predis и подтверждаю, что он подключается через библиотеку поставщика и составляет пакет

Я ввел SSH в поле homestead и запустил redis-cli и выполнил тест ping / pong, чтобы подтвердить, что сервер redis фактически запущен.

Я также запустил тест версии redis-server —version.

 Redis server v=5.0.8 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=129cf1a0751f12a
  

Следуя руководству, я написал первый тест

 public function test_it_increments_a_threads_score_each_time_it_is_read()
    {

        $this->assertEmpty( Redis::zrevrange('trending_threads', 0, -1));

        $thread = create('AppThread');

        $this->call('GET', $thread->path());

        Redis::zrevrange('trending_threads', 0, -1);

        $this->assertCount(1,  Redis::zrevrange('trending_threads', 0, -1));


    }
  

и все, что я получаю, это

 PredisConnectionConnectionException : No connection could be made because the target machine actively refused it. [tcp://127.0.0.1:6379]
  

Я действительно изо всех сил пытаюсь понять, почему / как это сообщение сохраняется, когда я следил за всем построчно, я не использую Xamp или что-либо другое, кроме Homestead, но все еще получаю эту ошибку.

Конфигурация является стандартной конфигурацией, обновленной до библиотеки predis

     'redis' => [

        'client' => env('REDIS_CLIENT', 'predis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        ],

        'default' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', 'localhost'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_DB', '0'),
        ],

        'cache' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_CACHE_DB', '1'),
        ],

    ],
  

My Homestead Yaml

 ---
ip: "10.100.110.10"
memory: 2048
cpus: 2
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/code
      to: /home/vagrant/code

sites:

    - map: tweety.test.com
      to: /home/vagrant/code/tweety/public

    - map: bird.test.com
      to: /home/vagrant/code/birdboard/public

    - map: ecosystem.test.com
      to: /home/vagrant/code/ecosystem/public

    - map: multiform.test.com
      to: /home/vagrant/code/multi_upload/public


databases:
    - tweety
    - birdboard
    - ecosystem
    - multi_upload

features:
    - mariadb: false
    - ohmyzsh: false
    - webdriver: false

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

  

Кто-нибудь сталкивался с этим раньше или имел какие-либо идеи о направлении? Это сводит меня с ума и является довольно большим блокиратором в серии.

Для справки — я запускаю Laravel 7 на Homestead через Vagrant Box на моем ноутбуке с Windows. 🙂

Приветствую всех

Комментарии:

1. Существует очень, очень небольшая вероятность, что изменение localhost на 127.0.01 (или наоборот, поскольку я вижу оба здесь) может сработать. Если нет, попробуйте изменить конфигурацию redis, чтобы изменить узел привязки 0.0.0.0 , чтобы разрешить соединения отовсюду. Обычно в этом нет необходимости, если redis работает на той же «машине» (реальной или виртуальной), что и веб-сервер, но, возможно, стоит попробовать

Ответ №1:

не могли бы вы добавить также свой Homestead.файл yaml? Возможно, вам нужно изменить IP-адрес в этом файле на 192.168.10.10

Комментарии:

1. Я обновил YAML. Спасибо, что взглянули. 🙂 … IP-адрес здесь подключен к моему файлу Hosts, чтобы я мог запускать localhost через тестовые URL-адреса.

2. @AdamCatlow 10.100.110.10 используется для сопоставления ваших окон с vagrant. Я предполагаю, что ваш redis не находится на vagrant — возможно, попробуйте установить его IP-адрес на тот, который вы настроили (10.100.110.10). прямо сейчас вам отказано в доступе, потому что вы пытаетесь подключиться к своему локальному хостингу с помощью порта 6379

3. Спасибо — да, это было связано с этим IP. То, к чему я прибегнул, не уверен, что это правильный путь, но просто добавляю его сюда, если кто-то еще столкнется с такой же проблемой, — это, по сути, зайти в файл redis.conf в окне Virtual Homestead и изменить привязку с 127.0.0.1 на 10.100.110.10. Затем я перезапустил redis-сервер и обновил .env REDIS_HOST новым значением. Похоже, это решило проблему. Короче говоря, убедитесь, что IP-адрес в файле Hosts совпадает с IP-адресом в конфигурации Redis — если вы изменили его по умолчанию. Значения по умолчанию должны быть в порядке. Т.Е. локальные хосты.