Установка Sphinx Search на Debian и Ubuntu: пакет движка, PECL и сборка libsphinxclient
Зачем вообще копаться с Sphinx сегодня
Sphinx Search — отдельный демон полнотекстового поиска с упором на скорость индексации и выдачи; многие старые интеграции в интернет-магазинах и CMS до сих пор завязаны на него напрямую или через модуль поверх расширения PHP. Если вы только выбираете стек под новый проект, имеет смысл посмотреть в сторону Manticore Search как живого форка; здесь же — приземлённые шаги по Debian/Ubuntu, когда уже есть рабочий конфиг sphinx и нужно воспроизвести окружение на свежей машине.
Пакет движка в системе
Сам поисковый сервер ставится одной строкой из стандартных репозиториев большинства debian-подобных дистрибутивов:
sudo apt-get update
sudo apt-get install -y sphinxsearchПосле установки включайте службу так, как принято в вашем релизе (systemctl enable --now sphinxsearch или legacy-скрипты для SysV-init — зависит от конкретного образа).
Расширение PHP через PECL
Дальше понадобятся заголовочные файлы интерпретатора и инструменты сборки PECL:
sudo apt-get install -y php-dev php-pear build-essential
sudo pecl install sphinxНа современных релизах вместо php-dev могут понадобиться версионные метапакеты вроде php8.2-dev — ориентируйтесь на php -v. Если команда pecl install sphinx заканчивается на configure: error: Cannot find libsphinxclient headers, пакета разработки в репозитории либо нет, либо он не подцепился к тому выпуску SPI, который ожидает модуль PECL.
План Б: собрать libsphinxclient из исходников
Возьмите архив с исходниками, совместимый с вашей интеграцией (в старых инструкциях часто фигурировал релиз ветки 2.0.x), распакуйте и соберите только клиентскую часть:
wget https://sphinxsearch.com/files/sphinx-2.0.4-release.tar.gz
tar xzf sphinx-2.0.4-release.tar.gz
cd sphinx-2.0.4-release/api/libsphinxclient
./configure
make
sudo make install
sudo ldconfigЕсли make падает с конфликтом по символу sock_close, в файле sphinxclient.c для этой ветки иногда помогает сделать вспомогательную функцию статической: замените объявление вида void sock_close(int sock); на static void sock_close(int sock);, после чего повторите make и sudo make install. Это типичный «костыль» эпохи старых GCC/линкера и не является универсальной рекомендацией для произвольных версий — сверяйтесь с логом компиляции.
Включить расширение в PHP
Современный способ без ручных путей — отдельный ini-фрагмент в каталоге conf.d:
echo "extension=sphinx.so" | sudo tee /etc/php/*/mods-available/sphinx.ini
sudo phpenmod sphinx # или phpdismod/phpenmod для нужной SAPIНа некоторых дистрибутивах вместо метапакета удобнее целиться в версию интерпретатора явно (/etc/php/8.2/mods-available/ и включение через phpenmod -v 8.2 sphinx). Перезапустите php-fpm или Apache и проверьте блок sphinx в выводе php -m или через phpinfo() на одном процессе, совпадающем с вашим веб-сервером.
Итог
Минимальная связка сводится к пакету sphinxsearch, сборке клиентской библиотеки там, где штатные dev-пакеты не закрывают PECL, и аккуратному подключению sphinx.so именно для той SAPI-сборки PHP, которая обслуживает сайт.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии