После долгого перерыва, я решил написать очередную статью об apache solr и drupal. В этот раз речь пойдёт о настройке tomcat для того, чтобы apache solr мог работать, как демон. В интернете уже есть много разных мануалов по настройке tomcat, но не всегда они подходят для работы с drupal. В частности я настраивал tomcat и apache solr работал прекрасно. Но после того, как я подменил стандартные конфиги солра на конфиги друпала, солр перестал работать (начали вылетать java эксепшены).
- Поиск на Drupal 7 с помощью Apache Solr ч.1 — базовая настройка
- Поиск на Drupal 7 с помощью Apache Solr ч.2 — учимся настраивать индекс
- Поиск на Drupal 7 с помощью Apache Solr ч.3 — учимся добавлять собственные поля и опции в индекс
- Поиск на Drupal 7 с помощью Apache Solr ч.4 — фасетные фильтры
- Поиск на Drupal 7 с помощью Apache Solr ч.5 — виджеты для фасетных фильтров
- Поиск на Drupal 7 с помощью Apache Solr ч.6 — настраиваем apache solr + tomcat
Итак перейдем к делу.
Моя конфигурация
Ubuntu server 12.04
Apache solr 3.6.1
Drupal 7
Модули для поиска — search api и search_api_solr
А теперь установка
Устанавливаем tomcat
sudo apt-get install tomcat6
Скачиваем и распаковываем apache solr во временную директорию
mkdir /tmp/solr/
cd /tmp/solr/
wget http://archive.apache.org/dist/lucene/solr/3.6.1/apache-solr-3.6.1.tgz
tar xzvf apache-solr-3.6.1.tgz
Затем создаем директорию в которой будет работать на сервер Apache solr и копируем туда необходимые файлы
sudo mkdir /var/solr
Копируем war файл
sudo cp apache-solr-3.6.1/dist/apache-solr-3.6.1.war /var/solr/solr.war
Примеры ядер и конфиг для использования нескольких ядер.
sudo cp -R apache-solr-3.6.1/example/multicore/* /var/solr/
sudo chown -R tomcat6 /var/solr/
Связываем tomcat с нашим сервером Apache solr
echo -e '<Context docBase="/var/solr/solr.war" debug="0" privileged="true" allowLinking="true" crossContext="true">n<Environment name="solr/home" type="java.lang.String" value="/var/solr" override="true" />n</Context>' | sudo tee -a /etc/tomcat6/Catalina/localhost/solr.xml
echo 'TOMCAT6_SECURITY=no' | sudo tee -a /etc/default/tomcat6
Теперь в файле /etc/init.d/tomcat6 необходимо указать домашнюю директорию solr — /var/solr. Для этого редактируем параметр JAVA_OPTS
sudo nano /etc/init.d/tomcat6
И выставляем там:
if [ -z "$JAVA_OPTS" ]; then
JAVA_OPTS="$JAVA_OPTS -Dsolr.home=/var/solr"
fi
После этого перезагружаем tomcat:
sudo /etc/init.d/tomcat6 restart
Убеждаемся что все работает, для этого можно перейти по урлу localhost:8080/solr/
В случае успеха, вы должны увидеть примерно такую картинку
По умолчанию уже есть два ядра, но для того чтобы можно было использовать конфиг и схему из search_api для друпала, создадим новое ядро.
Сперва вписываем его в /var/solr/solr.xml
В конце файла описаны ядра, в моем случае, после добавления ядра, конфиг выглядит следующим образом:
<solr persistent="false">
<!--
adminPath: RequestHandler path to manage cores.
If 'null' (or absent), cores will not be manageable via request handler
-->
<cores adminPath="/admin/cores">
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
<core name="drupal" instanceDir="drupal" />
</cores>
</solr>
Затем копируем файлы из скачанного apache solr для нашего ядра которое будет работать с Drupal.
sudo mkdir /var/solr/drupal
sudo cp -R /tmp/solr/apache-solr-3.6.1/example/solr/* /var/solr/drupal
Кладем туда конфиг и схему из модуля search_api_solr
Снова перезагружаем tomcat командой
sudo /etc/init.d/tomcat6 restart
Устанавливаем настройки солра в Drupal
Теперь индексируем контент и наслаждаемся работой поиска!
Статьи вроде хорошие, но активности что-то мало. В некоторых статьях из этого цикла даже комментариев нет, вдруг никому не интересно? Буду рад конструктивным замечаниям в комментариях.
Автор: IlyinEugene