sergeytolkachyov
@sergeytolkachyov
https://web-tolk.ru

Как нормально запустить spinx на сервере?

Делаю поиск на сайте. Локалка на винде. На ней с плясками и бубном, но запустить сфинкс удалось и под него модули/плагины сделать удалось. Настало время переноса на прод и приключений.
Дано:
Sphinx 3.4.1 - лежит в /root/sphinx-3.4.1
Файл sphinx.conf - лежит в /etc/sphinxsearch/sphinx.conf
Содержимое sphinx.conf

#
# Minimal Sphinx configuration sample (clean, simple, functional)
#

source virt
{
    type            = mysql

    sql_host        = 127.0.0.1
    sql_user        = тут юзер
    sql_pass        = тут пароль
    sql_db          = тут имя базы
    sql_port        = 3306  # optional, default is 3306
	sql_query_pre	= SET NAMES utf8

    sql_query       = \
       SELECT ru.virtuemart_product_id as id,  ru.product_s_desc, ru.product_desc, ru.product_name, prod.product_sku \
        FROM e0bu9_virtuemart_products_ru_ru AS ru INNER JOIN e0bu9_virtuemart_products AS prod ON ru.virtuemart_product_id = prod.virtuemart_product_id 

}

index virtuemart
{
    source          = virt
    path            = /var/www/ЧАСТЬ_ПУТИ/data/sphinx/data/virt
	morphology      = stem_enru
	charset_table	= 0..9, A..Z->a..z, _, a..z, \
					U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+0435, U+451->U+0435
	blend_chars 	= +, U+23
	ignore_chars 	= U+AD
	min_word_len 	= 2
	html_strip 		= 1
}


indexer
{
    mem_limit       = 128M
}


searchd
{
    listen          = 9312
    log             = /var/log/sphinxsearch/searchd.log
    query_log       = /var/log/sphinxsearch/query.log
    read_timeout    = 5
    max_children    = 30
    pid_file        = /var/run/sphinxsearch/searchd.pid
    seamless_rotate = 1
    preopen_indexes = 1
    unlink_old      = 1
    workers         = threads # for RT to work
    binlog_path     = /var/www/ЧАСТЬ_ПУТИ/data/sphinx/data
}

Запускаем индексацию, находясь в /root/sphinx-3.4.1/bin/
indexer --all --config /etc/sphinxsearch/sphinx.conf
Индексация происходит нормально. Индексы ложатся там, где положено.

Запускаем ./searchd --config /etc/sphinxsearch/sphinx.conf и начинаются приключения.
Ошибки возникают самые разные. Чаще всего встречаются:
1. Не найден local index virtuemart.
Почитал, что для этого нужно перезапустить сфинкс. Остановили, запустили с указанием конфига Получаем:
~/sphinx-3.4.1/bin# ./searchd --config /etc/sphinxsearch/sphinx.conf
Sphinx 3.4.1 (commit efbcc65)
Copyright (c) 2001-2021, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/etc/sphinxsearch/sphinx.conf'...
listening on all interfaces, port=9312
precaching index 'virtuemart'
precached 1 indexes using 1 threads in 0.0 sec

Но при этом процесс может не запуститься. Ни в ISP в сетевых службах его может не быть, ни по pgrep PID не видно. Если запускается, то локальный индекс не видит. На локалке тот же конфиг (пути другие, понятно), работает.
2. Проблемы при перезапуске: вдруг находит одновременно sphinxdata и мой конфиг, пользует sphinxdata и там не находит конфига.
Лечится удалением в очередной раз sphinxdata, перезапуском. Но это весьма странно, так как при запуске путь к конфигу указываю.

Перечитал немало почти не существующей русскоязычной документации и более обильной англоязычной. Но воз и ныне там.
Подскажите, пожалуйста, как запустить эту ТВАРЬ!
  • Вопрос задан
  • 635 просмотров
Решения вопроса 1
sergeytolkachyov
@sergeytolkachyov Автор вопроса
https://web-tolk.ru
Итак, проблема решилась исправлением конфига. По какой-то причине сфинксу не понравились пути, которые я ранее указал для складывания индексов. Решил сделать по этому ответу на форуме сфинкса.

Путь для индексов /usr/local/sphinx/var/data
Путь для логов /usr/local/sphinx/var/log

После этого перезапустил сфинкс, находясь в директории /root/sphinx-3.4.1/bin (у Вас может быть другая директория установки).
./indexer --all --config /etc/sphinxsearch/sphinx.conf

Затем запуск самого сфинкса
./searchd --config /etc/sphinxsearch/sphinx.conf
Индексы подцепились, результаты в php получены.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
Странно
Находясь в папке /root/sphinx-3.4.1/bin/ запускать indexer нужно было с './' но Вы заустили без него, а searchd запускаете с './'
если никак не помогает, то пробуйте с указанием полного пути

/root/sphinx-3.4.1/bin/searchd и тд
/root/sphinx-3.4.1/bin/indexer и тд
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы