Установка и настройка Sphinx

Автор: Aport Суббота, Январь 31st, 2015 Нет комментариев

Рубрика: Software

Установка

Тут все просто, заходим на оф. страницу http://sphinxsearch.com/downloads/release/ и скачиваю версию Debian 6.0.5 Squeeze x86_64 DEB, даже не смотря на то, что у меня debian wheezy

# dpkg —install sphinxsearch.deb

Важно: в данной статье мы рассмотрим ситуацию, когда мы является владельцем сервера, где только один сайт с одним типом поиска, поэтому нам не нужно несколько конфигурационных файлов для др. проектов.

Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных MySQL, второй производит поиск по построенном индексу.

Принцип работы:

  1. есть дефольный конфиг /etc/sphinxsearch/sphinx.conf , где прописываются Sourse и Indexes
  2. есть индексатор indexer который читает конфиг, берет Sourse и делает Indexes
  3. есть крон-лист заданий /etc/cron.d/sphinx в котором мы прописываем запуск индексатора и говорим с каким Sourse и Indexes работать

Для информации:

  • Домашний каталог Sphinx-а: /var/run/sphinxsearch
  • Стартовый конфиг Sphinx-а: /etc/default/sphinxsearch

Правим файл /etc/default/sphinxsearch и ставим START=yes

Создаю директорию, где будут хранится база Sphinx: /home/lebnik/sphinx с правами 777 (я создал пользователем под которым работаю — lebnik, не от рута)

Создаю файл настроек Источников и Индексов (см. выше п.1) и прописываю там свои правила (как это делать я опускаю, кому нужно спрашивайте в комментах)

# nano /etc/sphinxsearch/sphinx.conf

выполняю индексацию

# indexer —all

Пытаюсь запустить сфинкса и получаю ошибку:

# searchd
Sphinx 2.0.8-id64-release (r3831)
Copyright (c) 2001-2012, Andrew Aksyonoff
Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file ‘/etc/sphinxsearch/sphinx.conf’…
FATAL: failed to open log file ‘/usr/local/sphinx/var/log/searchd.log’: No such file or directory

оказывается у меня в конфиге неправильно указаны пути к файлам логов и pid_file, исправляю конфиг

# nano /etc/sphinxsearch/sphinx.conf

после чего он выглядит так:

searchd
{
        # дает возможность использовать SphinxQL
        listen = localhost:3307:mysql41
        # Лог-файл демона
        log                     = /var/log/sphinxsearch/searchdLebnik.log
        # Лог поисковых запросов. Если закомментировать,то логировать поисковые строки не будет
        query_log               = /var/log/sphinxsearch/queryLebnik.log
        # Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта
        read_timeout            = 5
        # Максимальное количество одновременно-обрабатываемых запросов. 0 означает без ограничения
        max_children            = 30
        # Файл, в который сохраняется PID-процесса при запуске
        pid_file                = /var/log/sphinxsearch/searchdLebnik.pid
        # чтобы не выдавало ошибку WARNING: compat_sphinxql_magics=1 is deprecated; please update your application and config
        compat_sphinxql_magics = 0
}

и теперь успешно запускаю сфинкса :

# searchd

но теперь получаю WARNING в конфиге, оказывается я указал неправильно путь к файлу wordforms (исправляю это).

Обратите внимание: searchd уже запущен, и если попытаться его снова запустить, то получим ошибку:

FATAL: failed to lock pid file ‘/var/log/sphinxsearch/searchdLebnik.pid’: Resource temporarily unavailable (searchd already running?)

поэтому останавливаю сфинкса и снова включаю его:

# searchd —stop
# searchd

listening on all interfaces, port=3307
listening on all interfaces, port=9306

все отлично, теперь проверим работу SphinxQL в консоли. Для этого подключаемся на порт, который слушается сфинксом (специально выше показал пару строк, которые возникнут, когда Вы запустите searchd):

# mysql -h 127.0.0.1 -P 3307

и выполняем запрос на%D

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты