Установка и настройка sphinx на centos 5

Andy Wits Blog

Эта информация подойдёт для sphinx версий 2.0.9 и ниже (также sphinx 1.x). Если вам нужно установить и настроить версию 2.2.x (2.2.11, например), тогда смотрите здесь >>

[1] Инсталляция sphinx на centos 5

Где искать информацию?

Как всегда - сначала смотрим, что есть в поиске по запросу "установка sphinx на centos". Открываем несколько вкладок и работаем. Ну и конечно же, смотрим официальную документацию (http://sphinxsearch.com/docs)

yum search sphinx
yum install sphinx
cat /etc/redhat-release
CentOS release 5.9 (Final)
wget http://sphinxsearch.com/files/sphinx-2.0.9-1.rhel5.i386.rpm
yum --nogpgcheck localinstall sphinx-2.0.9-1.rhel5.i386.rpm
rpm -Uvh sphinx-2.0.9-1.rhel5.i386.rpm

ошибка: Неудовлетворенные зависимости: libmysqlclient.so.15 нужен для sphinx-2.0.9-1.rhel5.i386 libmysqlclient.so.15(libmysqlclient_15) нужен для sphinx-2.0.9-1.rhel5.i386

иду на http://sphinxsearch.com/docs/current.html#installing

wget http://sphinxsearch.com/files/sphinx-2.0.9-release.tar.gz
cd sphinx-2.0.9-release
./configure
make
libsphinx.a(sphinx.o): In function `xmlUnknownEncoding':
/root/install/sphinx-2.0.9-release/src/sphinx.cpp:22846: undefined reference to `libiconv_open'
/root/install/sphinx-2.0.9-release/src/sphinx.cpp:22864: undefined reference to `libiconv'
/root/install/sphinx-2.0.9-release/src/sphinx.cpp:22870: undefined reference to `libiconv_close'
collect2: выполнение ld завершилось с кодом возврата 1

Как побороть ошибку "collect2: ld completed with a return code 1" ?

замена: LIBS = -lexpat -ldl -lm -lz -L/usr/local/lib -lrt -lpthread на LIBS = -lexpat -liconv -ldl -lm -lz -L/usr/local/lib -lrt -lpthread помогла!

make
make install

[2] Настройка sphinx на centos 5

на всякий случай скопируем оригинальные конфиги:

cd /usr/local/etc
cp -i sphinx-min.conf.dist sphinx-min.conf.dist.copy
cp -i sphinx.conf sphinx.conf.copy

настроим конфигурацию под свою базу данных

nano /usr/local/etc/sphinx.conf

создадим папки, перечисленные в конфиге (иначе получим ошибки... :) )

mkdir /home/user/sphinx_data/
mkdir /var/log/sphinx/

запускаем процесс

searchd --config /usr/local/etc/sphinx.conf

проверим, что служба на нужных портах работает

lsof -i tcp:9312
lsof -i tcp:9306

проверим, что создались лог-файлы:

ls -lh /var/log/sphinx/

Полезные команды для службы поиска sphinx

создать индекс:

indexer --config /usr/local/etc/sphinx.conf --all

обновить индекс:

indexer --config /usr/local/etc/sphinx.conf --rotate

тест поиска в консоли:

search -q --config /usr/local/etc/sphinx.conf -a 123

или проще:

search -q 123

Для того, чтобы использовать поиск на сайте, нужно использовать Sphinx API для PHP. Это библиотека, поставляемая вместе с дистрибутивом. Находим, где он лежит:

locate sphinxapi.php
<?php
.....
// Подключаем sphinx-api
require_once ("sphinxapi.php");
.....
?>

Добавим в крон ротацию каждые 15 минут (путь indexer указываем полный, так как крон обычно не в курсе, где искать исполняемые файлы):

*/15 * * * * /usr/local/bin/indexer --config /usr/local/etc/sphinx.conf --rotate > /dev/null 2>&1

[3] Как сделать, чтобы при перезагрузке стартовал searchd (sphinx)?

  1. Красивый метод - как описано в статье.

  2. Простой метод - в кроне каждую минуту проверять, запущен ли searchd и запускать, в случае необходимости. Критерий - проверка существование pid-файла:

* * * * * if [ ! -f /var/log/sphinx/searchd.pid ]; then /usr/local/bin/searchd --config /usr/local/etc/sphinx.conf; fi > /dev/null 2>&1

 

Update, 21.12.2016: Эти настройки Sphinx подходят для версий 1.x, чтобы узнать, как поставить и настроить версии Sphinx 2.x читайте: Установка Sphinx 2.2.11 на Debian и CentOS, а также настройка в Yii

Published on Aug 07 2015 at 12:00 am
Time to read 2 minute(s)
Categories
  • System Administration

Contact me on