Установка Apache Solr 8.6 на Ubuntu 20.04

Введение
Apache Solr — масштабируемый, отказоустойчивый NoSQL-поиск, реализованный на Java и распространяемый с открытой лицензией. Solr хранит и ищет данные в режиме близком к реальному времени. Он поддерживает распределённый индекс, репликацию и балансировку нагрузки с автоматическим failover и восстановлением. Запросы можно выполнять через REST API.
В этом руководстве показано, как установить Apache Solr 8.6 на Ubuntu 20.04 и выполнить первичную настройку.
Что потребуется
- Сервер с Ubuntu 20.04.
- Доступ с правами root или sudo.
Перед началом — обновление системы
Рекомендуется сначала обновить пакеты, чтобы избежать проблем со зависимостями.
apt-get update -y
apt-get upgrade -yПосле обновления можно перезагрузить систему, чтобы применить ядро и другие обновления, если это требуется в вашей среде.
Важно: выполняйте обновление в рабочее окно, если это продакшен-сервер.
Установка Java
Solr написан на Java, поэтому на машине должен быть установлен JDK. В примере использован OpenJDK 11.
apt-get install default-jdk -yПроверка установленной Java:
java -versionОжидаемый пример вывода:
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)Рекомендация: используйте Java 11 для Solr 8.x, если у вас нет строгой зависимости от другой версии.
Скачивание и установка Apache Solr
Скачайте релиз Solr 8.6.0 из архива Apache (пример):
wget https://archive.apache.org/dist/lucene/solr/8.6.0/solr-8.6.0.tgzРаспакуйте архив:
tar xzf solr-8.6.0.tgzЗапустите встроенный инсталлятор, который создаст системный сервис и расположит файлы в /opt/solr:
bash solr-8.6.0/bin/install_solr_service.sh solr-8.6.0.tgzПример ожидаемого вывода инсталлятора:
Service solr installed.
Customize Solr startup configuration in /etc/default/solr.in.sh
? solr.service - LSB: Controls Apache Solr as a Service
Loaded: loaded (/etc/init.d/solr; generated)
Active: active (exited) since Sat 2020-07-25 03:00:19 UTC; 5s ago
Docs: man:systemd-sysv-generator(8)
Process: 4692 ExecStart=/etc/init.d/solr start (code=exited, status=0/SUCCESS)
Jul 25 03:00:09 ubuntu2004 systemd[1]: Starting LSB: Controls Apache Solr as a Service...
Jul 25 03:00:09 ubuntu2004 su[4694]: (to solr) root on none
Jul 25 03:00:09 ubuntu2004 su[4694]: pam_unix(su-l:session): session opened for user solr by (uid=0)
Jul 25 03:00:19 ubuntu2004 systemd[1]: Started LSB: Controls Apache Solr as a Service.После установки Solr слушает порт 8983 по умолчанию. Проверить можно командой:
netstat -tunelp | grep 8983Ожидаемый вывод:
tcp6 0 0 :::8983 :::* LISTEN 108 24019 4756/javaУправление сервисом Solr
Solr установлен как systemd-сервис. Основные команды:
systemctl start solr
systemctl stop solr
systemctl status solr
systemctl enable solrЕсли сервис не запускается, посмотрите логи:
journalctl -u solr --no-pager | tail -n 200
/opt/solr/logs/solr.logСоздание коллекции
Коллекция (collection) — логический индекс, который может быть распределён между узлами. Core — экземпляр индекса на отдельном ноде.
Создадим коллекцию mytestcollection с использованием шаблона data_driven_schema_configs:
su - solr -c "/opt/solr/bin/solr create -c mytestcollection -n data_driven_schema_configs"Ожидаемый вывод:
Created new core 'mytestcollection'Критерии приёмки:
- Сервис solr активен и слушает порт 8983.
- Коллекция mytestcollection отображается в панели и отвечает на запросы.
Доступ к веб-интерфейсу
Откройте в браузере:
http://ваш-ip-сервера:8983/solr

В левом меню выберите mytestcollection, чтобы увидеть статус коллекции и статистику:

Базовая проверка работоспособности
Простой запрос к коллекции через curl (если коллекция пуста, ответ будет с нулём результатов):
curl "http://localhost:8983/solr/mytestcollection/select?q=*:*&wt=json&indent=true"Если сервис возвращает JSON с полем response.numFound, запрос успешен.
Резервное копирование и обновление схемы
- Резервные копии индекса делаются с помощью snapshot/replication или создания экспортируемых дампов. Планируйте резервные копии перед изменением схемы.
- Для изменения схемы используйте managed schema API или обновление через конфигурационные файлы в Zookeeper (для SolrCloud).
Безопасность и настройки сети
- По умолчанию Solr не требует аутентификации. Для продакшена обязательно включите защиту: Basic Auth, TLS (HTTPS) и контроль доступа.
- Защитите порт 8983 брандмауэром (ufw) или настройте обратный прокси (nginx) с TLS и ограничением доступа по IP.
Пример разрешения доступа по ufw:
ufw allow from 10.0.0.0/24 to any port 8983 proto tcpИли блокировать весь доступ и открывать только через VPN/SSH-туннель.
Тонкая настройка JVM и памяти
Solr использует JVM-память, настройки находятся в /etc/default/solr.in.sh. Отрегулируйте SOLR_HEAP при больших объёмах данных. Для теста оставьте значения по умолчанию, затем увеличивайте по нагрузке.
Отладка и распространённые проблемы
- Сервис не стартует: проверьте логи systemd и /opt/solr/logs/solr.log.
- Порт 8983 занят: найдите процесс по netstat или ss и измените порт в настройках запуска.
- Проблемы с Java: убедитесь, что JAVA_HOME корректен и соответствует установленной версии.
- Коллекция не отображается: проверьте права пользователя solr и директории /var/solr.
Альтернативные подходы
- Использовать SolrCloud для распределённого кластера с Zookeeper.
- Развернуть Solr в контейнере Docker для простой изоляции и версионирования конфигураций.
- В качестве альтернативы рассмотреть Elasticsearch, если требуется тесная интеграция с Elastic Stack.
Роли и чек-лист (быстрая проверка)
Администратор:
- Установил Java и проверил java -version.
- Запустил инсталлятор solr и убедился в активном systemd-сервисе.
- Настроил брандмауэр и доступ к панели.
Разработчик:
- Создал коллекцию и протестировал базовые запросы.
- Загрузил тестовые документы и проверил поиск по ним.
DevOps/Инженер по безопасности:
- Настроил TLS/Basic Auth или ограничил доступ по IP.
- Настроил мониторинг и логи (Prometheus/JMX, централизованные логи).
Критерии приёмки
- Solr запущен и отвечает на http://:8983/solr (статус 200).
- Коллекция создана и возвращает корректный JSON на select?q=:.
- Бекап или стратегия восстановления документирована.
Короткое руководство по обновлению (минимальные шаги)
- Сделать полную резервную копию индекса/конфигураций.
- Остановить сервис solr.
- Установить новую версию и протестировать на staging.
- Перенести конфигурации и запустить сервис.
Заключение
Мы рассмотрели установку Apache Solr 8.6 на Ubuntu 20.04: обновление системы, установка Java, скачивание и установка Solr, управление сервисом, создание коллекции и основные рекомендации по безопасности и отладке. Для продакшен-окружения дополнительно настройте аутентификацию, TLS и мониторинг. Для подробной документации и передовых практик посетите официальную документацию Apache Solr.
Факт-бокс:
- Версия примера: Solr 8.6.0
- Порт по умолчанию: 8983
- Тип установки: systemd-сервис, файлы в /opt/solr
- Пользователь сервиса: solr
Короткая контрольная проверка: откройте http://ваш-ip:8983/solr и убедитесь, что на странице отображается ваша коллекция.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента