Установка solr 4.x через tomcat7 на CentOS 6 с http авторизацией
Надо сказать, что способ установки через tomcat6, я не рекомендую! Дело в том, что версия, который идёт из репозитория updates имеет номер 6.0.24, которая подвержена уязвимости в безопасности CVE-2011-3190. Да и вообще хорошо же работать с версиями новее ;-)
Итак:
Установим java 7. Уже хватит сидеть на древней шестёрке:
yum install java-1.7.0-openjdk
Проверим, что всё нормально:
java -version
java version "1.7.0_55" OpenJDK Runtime Environment (rhel-2.4.7.1.el6_5-x86_64 u55-b13) OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
Теперь установим tomcat:
yum install tomcat tomcat-admin-webapps tomcat-webapps tomcat-lib apache-tomcat-apis tomcat-native
Проверим:
tomcat version
Server version: Apache Tomcat/7.0.33 Server built: Apr 30 2014 09:16:58 Server number: 7.0.33.0 OS Name: Linux OS Version: 2.6.32-042stab090.4 Architecture: amd64 JVM Version: 1.7.0_55-mockbuild_2014_04_16_12_11-b00 JVM Vendor: Oracle Corporation
Добавим tomcat в автозагрузку ОС и включим его:
chkconfig tomcat on && /etc/init.d/tomcat start
Теперь уже можно проверить, что он завёлся. Идём на http://your_ip.com:8080
Переходим к установке solr
Идём по ссылке и смотрим последнюю версию:
http://apache-mirror.rbc.ru/pub/apache/lucene/solr/
На момент написания была 4.4. Скачиваем её и распаковываем:
wget http://archive.apache.org/dist/lucene/solr/4.4.0/solr-4.4.0.tgz && tar -xzf solr-4.4.0.tgz
Копируем файлы solr. Рекомендую сразу устанавливать всё в режиме "multicore" - это когда solr умеет различать отдельные инстансы для, например, разных сайтов. Мне удобнее, чтобы ядра располагались по адресу /var/solr, но Вы можете выбрать любую другую директорию:
mkdir /var/solr/ cp -Ra solr-4.4.0/example/multicore/* /var/solr/
Да, именно! Нам не нужна вся папка! Только эти файлы.
Далее нужно скопировать solr-4.4.0/dist/solr-4.4.0.war в папку /usr/share/tomcat/webapps/. Это можно сделать либо просто переместив файл, тогда tomcat сразу же сам разархивирует файл и создаст папку solr-4.4.0. Нужно её переименовать... в общем, мне так не удобно. Пойдём другим путём:
unzip solr-4.4.0/dist/solr-4.4.0.war -d /usr/share/tomcat/webapps/solr
И ещё нужно скачать библиотеки и, до кучи, дадим tomcat'у на всё права:
cp -Ra solr-4.4.0/dist/solrj-lib/* /usr/share/java/tomcat/ chown -R tomcat.tomcat /usr/share/java/tomcat/ /usr/share/tomcat/ /var/solr
Теперь... редактируем файл /var/lib/tomcat/webapps/solr/WEB-INF/web.xml:
nano /var/lib/tomcat/webapps/solr/WEB-INF/web.xml
Находим секцию env-entry и меняем в ней, на самом деле, одну строку, где написано put/your/solr/...чё-то-там, но я приведу вид вей секции:
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/var/solr</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
Это не всё. Для http авторизации в solr необходимо в этот же файл добавить строчки в любое место между < web-app >< /web-app >. Предлагаю как раз в самый конец перед последней строкой < /web-app >
<security-constraint> <web-resource-collection> <web-resource-name>Solr Lockdown</web-resource-name> <url-pattern>/</url-pattern> </web-resource-collection> <auth-constraint> <role-name>solr-role</role-name> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>Solr</realm-name> </login-config>
Теперь отредактируем файл /etc/tomcat/tomcat-users.xml:
nano /etc/tomcat/tomcat-users.xml
Сделаем отдельную учётную запись для администратора и для пользователя solr. Без комментированных пояснений в файле остаётся следующее:
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="admin"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <role rolename="solr-role" /> <user username="admin" password="admin_password" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" /> <user username="solr" password="solr_password" roles="solr-role" /> </tomcat-users>
Вроде, всё. Перезапускаем tomcat:
/etc/init.d/tomcat restart
Проверяем, что теперь solr доступен по http://your_ip.com:8080/solr с запросом http авторизации.
Комментарии
Андрей
02/13/2014 - 20:10
Постоянная ссылка (Permalink)
После шага chkconfig tomcat6
После шага chkconfig tomcat6 on && /etc/init.d/tomcat6 start получаю [root@qwerty init.d]# chkconfig tomcat6 on && /etc/init.d/tomcat6 start
Starting tomcat6: [СБОЙ ]
erian
02/13/2014 - 21:35
Постоянная ссылка (Permalink)
Очень странно, что такое в
Очень странно, что такое в самом начале. Нужно посмотреть, что пишется в логах tomcat'а. Уверен, всё стает понятно. Возможно, у Вас просто занят порт 8080, на котором tomcat поднимается по умолчанию. Покажите вывод:
tail -30 /var/log/tomcat6/catalina.out
Андрей
02/13/2014 - 22:05
Постоянная ссылка (Permalink)
tail -30 /var/log/tomcat6
Андрей
02/13/2014 - 22:10
Постоянная ссылка (Permalink)
Причем tomcat6 start
Причем tomcat6 start запускает Томкат, мой_ип:8080 доступен
erian
02/13/2014 - 22:32
Постоянная ссылка (Permalink)
Надо посмотреть по умолчанию,
Надо посмотреть по умолчанию, если не ошибаюсь, он запускается не на <Ваш_IP>, а на всех, т.е. 0.0.0.0.
Так же надо проверить порты 8005, 8009, 8080.
Попробуйте этой командой:
netstat -anp
Можно ещё добавить grep, чтобы удобнее было смотреть:
netstat -anp | grep 8080
netstat -anp | grep 8005
netstat -anp | grep 8009
Вообще, он же пишет:
SEVERE: StandardServer.await: create[8005]:
java.net.BindException: Адрес уже используется
Проверьте его, в первую очередь.
erian
02/13/2014 - 22:36
Постоянная ссылка (Permalink)
Ещё есть смысл проверить не
Ещё есть смысл проверить не закрыт ли порт firewall'ом, к примеру. Можно так:
telnet localhost 8005
Если нет такой команды, установить просто:
yum install telnet
Вывод telnet'а должен быть:
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.
Добавить комментарий