Установка apache-solr 1.4.1 для Drupal на Centos

Apache Solr - это расширяемая поисковая платформа от Apache. Система основана на библиотеке Apache Lucene и разработана на Java. Особенности ее в том, что она представляет из себя не просто техническое решение для поиска а именно платформу, поведение которой можно легко расширять/менять/настраивать под любые нужды - от обычного полнотекстового поиска на сайте до распределенной системы хранения/получения/аналитики текстовых и других данных с мощным языком запросов.

Требования:
JAVA 1.5 или выше (начиная с Sorl 4 — JAVA 1.6 или выше);
Контейнер сервлетов (Tomcat, Jetty, Resin) — для модуля drupal не нужно;
Собственно, Solr дистрибутив;
Дабы избежать каких то там багов с XSLT рекомендуется установить «системные настройки Duser.language=en -Duser.country=US» - для модуля drupal не нужно;
Для полной поддержки международных кодировок используйте полный JDK, а не JRE по умолчанию установленный.

Установка JAVA.

Проверяем последнюю доступную в репозиториях стабильную версию:
yum search java

Устанавливаем. На 04.06.12 была эта:
yum install java-1.6.0-openjdk.x86_64

У меня ставятся ещё дополнительные библиотеки и т.п. Думаю, это ясно.

Далее проверяем, что всё работает:

java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.6) (rhel-1.25.1.10.6.el5_8-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

Установка Solr. Создаём и заходим в папку. Называйте как хотите.

mkdir /var/www/solr/ 
cd /var/www/solr

Вообще, нам нужна версия 1.4.1 и не выше. Ибо так советует народ =) Я в подробности не вдавался. Прогеры сказали её — ставим её: apache-solr-1.4.1.tgz.
P.S. Вообще, честно говоря, сначала поставил последнюю. Но возникли какие-то проблемы в drupal'е, так что переставил на 1.4.1.

Ссылки на скачивание смотрим тут:
http://www.sai.msu.su/apache/lucene/solr/ или
ftp://apache.rinet.ru/pub/mirror/apache.org/dist/lucene/solr/
И, собственно, скачаем её
wget http://www.sai.msu.su/apache/lucene/solr/1.4.1/apache-solr-1.4.1.tgz

Разархивируем. Архив можно сразу убить. Вытаскиваем всё «наверх» (скрытых файлов там нет). Папочку удаляем за ненадобностью:

tar -xzvf apache-solr-1.4.1.tgz
rm -f apache-solr-1.4.1.tgz
mv ./apache-solr-1.4.1/* ./
rm -rf apache-solr-1.4.1/

Далее запускаем. Обязательно сначала надо перейти в папку!:

cd /var/www/solr/example/ &&
java -jar start.jar

Значится он там поработает и встанет на строчке:
Started SocketConnector@0.0.0.0:8983
В это время мы можем зайти на любой свой хост на этом сервере по адресу:
http://yourdomain.com:8983/solr/admin/

Далее в консоле останавливаем задачу сочетанием клавиш Ctrl+C. Должны увидеть ещё пару строчек, заканчивающихся на:
Shutdown hook complete

Далее выполняем команду редактирования файла (одновременно создавая его) и вставляем в него нижележащий код, меняя его под Ваши параметры:
nano /etc/init.d/solr

#!/bin/sh -e 
 
# Starts, stops, and restarts solr 
#!/bin/sh -e 
 
#chkconfig: 2345 95 20 
#description: apache-solr 
#processname: solr 
 
SOLR_DIR="/var/www/solr/example" 
JAVA_OPTIONS="-Xmx1024m -DSTOP.PORT=8079 -DSTOP.KEY=mustard -jar start.jar" 
LOG_FILE="/log/solr/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 755 /etc/init.d/solr
chkconfig --add solr
/etc/init.d/solr start

Проверяем:
http://yourdomain.com:8983/solr/admin/

Теперь сделаем следующее:

cd /var/www/solr/example/exampledocs
sh post.sh *.xml

Ещё после установки модуля в сам друпал (задача прогеров =) ) нам необходимо заменить два файлика, предварительно их забекапив:

cd /var/www/solr/example/solr/conf/
mv schema.xml schema.bac
mv solrconfig.xml solrconfig.bac
cp /var/www/yourdomen.ru/sites/all/modules/contrib/search_api_solr/solrconfig.xml /var/www/solr/example/solr/conf/
cp /var/www/yourdomen.ru/sites/all/modules/contrib/search_api_solr/schema.xml /var/www/solr/example/solr/conf

Но и это ещё не всё! =) в общем, есть там на данный момент в модуле (ver. 7.x-1.0-rc2) drupal какие-то косяки. В общем лечится это так:

cd /var/www/yourdomen.ru/sites/all/modules/contrib/search_api_solr/
wget http://drupal.org/files/1413504--solr_registry-14.patch
wget http://drupal.org/files/1413504--solr_client_in_hook_boot-14.patch
patch -p1 < 1413504--solr_registry-14.patch
patch -p1 < 1413504--solr_client_in_hook_boot-14.patch

Ну, по идее, это всё. Ах, да, перезапускаем solr:
/etc/init.d/solr restart
У наших заработало =)

Комментарии

Вопрос по строке "nano /etc/init.d/solr", у меня ничего не выходит. Ошибка "команда не найдена". Использую терминал mac os. До сего пункта всё получалось (кроме того, что в статье отсутствует "cd exampledocs" и "sh post.sh *.xml" перед командой старта.

1. Ради интереса проверил статью практически ещё раз. Всё встало без проблем. Подправил лишь момент с запуском "start.jar". Моя система: CentOS release 6.4 (Final).

2. Если ставите для drupal, воспользуйтесь статьей "Установка solr 4.4 через tomcat6 на CentOS 6 с http авторизацией". Все конфиги для solr уже работают на версии 4.x.

3. Спасибо за замечание про "cd exampledocs" и "sh post.sh *.xml"! Только, как я понимаю не а) "перед командой старта", а б) после:
а)

Posting file hd.xml to http://localhost:8983/solr/update
curl: (7) couldn't connect to host

б)

Posting file hd.xml to http://localhost:8983/solr/update
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">117</int></lst>
</response>

4. Не очень понял, что значит "Использую терминал mac os"? В смысле для подключения к удалённому хосту? - тогда нет разницы. Или в смысле устанавливаете на mac os? Если есть возможность, объясните подробнее и покажите выводы команд и ошибок. Постараюсь помочь.

Терминал для подключения. Устанавливаю на CentOS. Не работает команда nano! Вообще не работает. Совсем :) Нифига! )))

Бывает =)
Nano - то просто текстовый редактор. Использую, потому что он прост в управлении. Редактировать файл можно любым имеющимся у Вас. vi, vim, gedit и т.д.
Соответственно, ставиться он так же просто:
yum install nano
Это для CentOS.

Я немного не понимаю, Вы ставите solr на Mac OS? Или просто пользуетесь терминалом и заходите на другой сервер по ssh?

Если первый вариант, то в mac os нет /etc/init.d. Нужно в другое место записывать скрипт "демона".
Если второй вариант, уточните какая ОС, я подскажу.

Терминал мака использую для подключения. Говорю же, уставнавливаю на CentOS. Версия цента 6.2 Blank (64 bit). Там тоже нет /etc/init.d

... это невозможно =) Тем не менее, пример моих серверов:

ls /
bin  boot  dev  etc  home ...
ls -l /etc/
...
lrwxrwxrwx.  1 root   root       11 Июл 23 15:13 init.d -> rc.d/init.d
...

Что говорит нам, что /etc/init.d просто ссылка на /etc/rc.d/init.d. Там должны быть утилиты, вроде:

ls /etc/rc.d/init.d
atd crond httpd ...

и т.д. Такая папка есть? Если да - создавайте там. ОС должна видеть эти файлы таким образом, чтобы срабатывала команда:
service <utilita> command
например:

service solr status
Usage: /etc/init.d/solr {start|stop|restart}

Все отлично работает, спасибо! Только с патчем друпала еще разбираемся

Всегда пожалуйста =)

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image