Как установить Apache‑Solr и подключить его к Drupal и ISPConfig (OpenSUSE/Debian)
Кратко
Solr — быстрый и мощный поисковый движок Apache Lucene. В этой инструкции показано, как установить Solr 1.4.1, подключить его к модулю ApacheSolr в Drupal и запускать через init-скрипт на OpenSUSE/Debian. Приведены команды, конфигурационные файлы и типичные решения проблем.
Важно: это руководство предполагает, что Drupal уже установлен и вы работаете под root или через sudo.
Что вам понадобится
- Сервер под OpenSUSE или Debian с правами root/sudo.
- Установленный Drupal (инструкция по установке Drupal не входит в этот документ).
- Доступ через терминал и возможность открывать порт 8983 в брандмауэре ISPConfig.
- Java (рекомендуемая версия, совместимая с Solr 1.4.1, в оригинале — Java 1.5).
Подготовка файлов .htaccess
В корне вашего Drupal установите этот файл .htaccess (замените существующий, если нужно):
RewriteEngine on
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
#RewriteCond %{REQUEST_URI} !=/favicon.ico
В каталоге /web/sites/default/files откройте .htaccess и закомментируйте строки, как указано:
#SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
#Options NoneПримечание: не удаляйте файл .htaccess целиком — закомментируйте только указанные строки.
Установка PHP-расширений, необходимых Drupal
Выполните на сервере (как root или через sudo):
pecl install uploadprogress
pecl install json
pecl install apc
pecl install -n solr-betaОткройте php.ini вашего Apache:
nano -w /etc/php5/apache2/php.iniДобавьте (или убедитесь, что присутствуют) следующие строки, чтобы расширения загружались с PHP:
; Directory in which the loadable extensions (modules) reside.
extension_dir = /usr/lib64/php5/extensions
extension=uploadprogress.so
extension=apc.so
extension=solr.soСохраните и перезапустите веб-сервер:
/etc/init.d/apache2 restartВажно: пути к расширениям и php.ini могут отличаться в зависимости от дистрибутива — проверьте их перед изменением.
Установка и запуск Apache‑Solr 1.4.1
Скачиваем и распаковываем Solr (пример для версии 1.4.1 из зеркала Apache):
cd /tmp
wget http://mirrors.ukfast.co.uk/sites/ftp.apache.org/lucene/solr/1.4.1/apache-solr-1.4.1.zip
unzip apache-solr-1.4.1.zip
mv apache-solr-1.4.1 apache-solr
cp -r apache-solr /usr/share/apache-solrСкопируйте конфигурацию из модуля apachesolr вашего Drupal в конфигурацию Solr (пути в примере указаны для оригинальной установки автора):
cp /srv/www/web11/web/sites/all/modules/apachesolr/solrconfig.xml /usr/share/apache-solr/example/solr/conf/solrconfig.xml
cp /srv/www/web11/web/sites/all/modules/apachesolr/schema.xml /usr/share/apache-solr/example/solr/conf/schema.xmlЗапуск Solr вручную (для теста):
cd apache-solr/example
java -jar start.jarОткройте в браузере (не забудьте открыть порт 8983 в брандмауэре ISPConfig):
http://yourwebsite.com:8983/solr/admin/
Если страница доступна — тест успешен. Для остановки запущенного процесса нажмите Ctrl+C в терминале.
Автозапуск Solr при старте системы
Создайте init-скрипт:
nano -w /etc/init.d/solrВставьте следующий скрипт (в файл скопируйте точно как ниже):
#!/bin/sh -e
# Starts, stops, and restarts solr
SOLR_DIR="/usr/share/apache-solr/example"
JAVA_OPTIONS="-Xmx1024m -DSTOP.PORT=8079 -DSTOP.KEY=stopkey -jar start.jar"
LOG_FILE="/var/log/solr.log"
JAVA="/usr/bin/java"
case $1 in
start)
echo "Starting Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS 2> $LOG_FILE &
;;
stop)
echo "Stopping Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS --stop
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esacСделайте скрипт исполняемым:
chmod a+rx /etc/init.d/solrПроверьте список сервисов и добавьте solr в автозагрузку:
chkconfig --list
chkconfig --add solrЗапуск/остановка через сервис:
service solr stop
service solr startПроверьте в браузере:
http://yourdomain.com:8983/solr/admin/
Если всё верно — вы увидите интерфейс Solr.
Типичные проблемы и их решения
- Solr не стартует: проверьте версию Java и логи /var/log/solr.log. Solr 1.4.1 чувствителен к версии JVM — в оригинале использовалась Java 1.5.
- Порт 8983 недоступен: откройте порт в ISPConfig/iptables/ufw и проверьте, что нет локального firewall, блокирующего доступ.
- Drupal не индексирует: убедитесь, что модуль ApacheSolr настроен и URL Solr в настройках модуля совпадает с http://localhost:8983/solr/ или нужным вам адресом.
- Ошибки схемы: если Solr жалуется на поля, проверьте schema.xml, который скопирован из модуля apachesolr — он должен соответствовать полям, которые отправляет Drupal.
Важно: не удаляйте оригинальные конфигурационные файлы без их резервного копирования.
Альтернативные подходы
- Использовать системные пакеты вашего дистрибутива (apt/yum/zypper) для установки Solr, если доступны — это упростит обновления и автозапуск.
- Запускать Solr в Docker-контейнере — упрощает изоляцию и совместимость Java-версий.
- Рассмотреть SolrCloud для распределённого поиска и высокой доступности, если нужно масштабирование.
Безопасность и эксплуатация
- Закройте доступ к интерфейсу администратора Solr (8983) извне — используйте проксирование через Apache/Nginx с базовой аутентификацией или настройте firewall.
- Резервное копирование: сохраняйте конфигурации solrconfig.xml и schema.xml отдельно и храните копии вместе с дампами Drupal.
- Ограничьте память JVM через -Xmx*, чтобы избежать OOM на серверах с ограниченными ресурсами.
Контрольные списки по ролям
Системный администратор:
- Проверить Java (совместимую версию).
- Установить Solr и init-скрипт.
- Открыть порт 8983 только для админов или проксировать через SSL.
Разработчик Drupal:
- Установить модуль ApacheSolr в Drupal.
- Скопировать solrconfig.xml и schema.xml из модуля в конфигурацию Solr.
- Запустить полную переиндексацию после настройки.
Мини‑методология быстрого развертывания (шаги)
- Установить Java и проверить java -version.
- Установить PHP-расширения (PECL) и обновить php.ini.
- Скачать и развернуть Solr, скопировать конфиги из модуля Drupal.
- Запустить Solr вручную и проверить http://host:8983/solr/admin.
- Создать init-скрипт, добавить в автозапуск, настроить firewall и прокси.
Краткий словарь
- Solr — поисковый сервер на базе Apache Lucene.
- schema.xml — схема полей и типов данных для индекса.
- solrconfig.xml — конфигурация поведения Solr (кеши, обработчики запросов).
Совместимость и примечания
- Версия Solr 1.4.1 устарела; для новых проектов рассмотрите современные версии Solr или SolrCloud.
- Путь к php.ini и extension_dir может отличаться между OpenSUSE и Debian — проверьте перед изменением.
- Если используете ISPConfig, настройте правила брандмауэра так, чтобы админ-доступ был ограничен.
Итог
Это практическое руководство покрывает базовую установку Apache‑Solr 1.4.1, интеграцию с модулем ApacheSolr для Drupal и организацию автозапуска через init-скрипт. После выполнения шагов у вас должен работать локальный Solr, готовый принимать документы от Drupal.
Ключевые действия: установить Java и PHP-расширения, скопировать solrconfig.xml и schema.xml из модуля ApacheSolr, протестировать запуск через java -jar start.jar, затем создать init-скрипт и добавить сервис в автозагрузку.
Примечание
Если вы планируете промышленное использование или масштабирование, обновите Solr до современной поддерживаемой версии и рассмотрите SolrCloud или облачные сервисы поиска.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента