Настройка поиска

MSE-Script

Developer
Команда форума
Сообщения
873
Реакции
310
www@v403205:/var/www/html/api.___.ru$ php -f bash/sphinxInit.php

sudo add-apt-repository ppa:builds/sphinxsearch-rel21
sudo apt-get update
sudo apt-get install sphinxsearch

www@v403205:/var/www/html/api.___.ru$ indexer --config runtime/sphinx/main.conf --all
Sphinx 2.2.11-id64-release (95ae9a6)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file 'runtime/sphinx/main.conf'...
indexing index 'track'...
WARNING: attribute 'search_index' not found - IGNORING
WARNING: Attribute count is 0: switching to none docinfo
collected 1371229 docs, 314.1 MB
sorted 46.2 Mhits, 100.0% done
total 1371229 docs, 314084233 bytes
total 97.100 sec, 3234637 bytes/sec, 14121.77 docs/sec
total 36 reads, 0.101 sec, 7424.7 kb/call avg, 2.8 msec/call avg
total 649 writes, 0.350 sec, 751.0 kb/call avg, 0.5 msec/call avg
www@v403205:/var/www/html/api.___.ru$ searchd --config runtime/sphinx/main.conf
Sphinx 2.2.11-id64-release (95ae9a6)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file 'runtime/sphinx/main.conf'...
listening on 127.0.0.1:9312
listening on 127.0.0.1:9306
precaching index 'track'
precached 1 indexes in 0.038 sec
 

MSE-Script

Developer
Команда форума
Сообщения
873
Реакции
310
Инструкция: как подключиться к MySQL на локалхосте из Docker-контейнера с SphinxSearch
Шаг 1. Проверьте настройки MySQL

  1. Убедитесь, что MySQL-сервер на вашей машине слушает не только localhost, а все интерфейсы (0.0.0.0) или хотя бы интерфейс, доступный контейнеру.
  2. Откройте файл конфигурации MySQL (обычно my.cnf или mysqld.cnf) и найдите параметр bind-address.
    Пример:
    text

    bind-address = 0.0.0.0

  3. Перезапустите MySQL-сервер после изменения конфигурации.
Шаг 2. Разрешите доступ пользователю MySQL
  1. Убедитесь, что у пользователя MySQL есть права на подключение не только с localhost, но и с нужного IP (например, с % — любой адрес).
    text

    GRANT ALL PRIVILEGES ON база_данных.* TO 'пользователь'@'%' IDENTIFIED BY 'пароль';
    FLUSH PRIVILEGES;
Шаг 3. Узнайте IP-адрес вашей машины
  • В контейнере localhost будет указывать на сам контейнер, а не на вашу машину.
  • Узнайте IP-адрес вашей машины в локальной сети (например, через ip a или ifconfig).
Шаг 4. Запустите контейнер с SphinxSearch
  • Если контейнер уже запущен, переходите к следующему шагу.
  • Если запускаете через docker run, убедитесь, что сеть настроена правильно (например, используйте --network=host на Linux, если это допустимо, или пробросьте порты).
Шаг 5. Настройте SphinxSearch на подключение к MySQL
  • В конфиге SphinxSearch укажите IP-адрес вашей машины и порт MySQL (обычно 3306):
    text

    sql_host = <IP_вашей_машины>
    sql_user = <пользователь>
    sql_pass = <пароль>
    sql_db = <база_данных>
    sql_port = 3306
Шаг 6. Проверьте подключение
  • Перезапустите SphinxSearch и проверьте логи на наличие ошибок подключения.
  • Если есть проблемы с фаерволом, откройте порт 3306 для входящих соединений с контейнера.
Примечания:
  • Если вы используете Docker Compose, можно явно указать сеть и алиасы.
  • На Windows и Mac вместо IP можно попробовать использовать специальный DNS-адрес host.docker.internal для доступа к хосту из контейнера.
 
Сверху