#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 — если вы изменили его по умолчанию. Значения по умолчанию должны быть в порядке. Т.Е. локальные хосты.