Установка и защита Apache Solr на Rocky Linux
Важно: примеры выполнены для Rocky Linux 8.5 и Solr 8.11. Версии Java и Solr могут отличаться — корректируйте URL и зависимости под вашу версию.
Что такое Solr (коротко)
Solr — это серверная поисковая платформа с открытым исходным кодом на базе библиотеки Apache Lucene. Она обеспечивает полнотекстовый поиск, масштабируемую индексацию, репликацию, автоматическое восстановление и управление шардами. Термин “core” в Solr обозначает отдельный индекс (Lucene index) с собственными конфигурациями.
Ключевые термины:
- Solr core — отдельный индекс/логическая единица в Solr.
- Replication / Sharding — способы масштабирования и распределения данных.
- BasicAuth — плагин базовой аутентификации Solr.
Содержимое руководства
- Требования и подготовка
- Установка Java (OpenJDK 11)
- Установка Solr (8.11 как пример)
- Настройка лимитов ulimit для пользователя solr
- Проверка работы и открытие порта в firewalld
- Включение базовой аутентификации security.json
- Создание первого core через CLI
- Безопасность, отладка, playbook, чек-листы, критерии приёмки, FAQ
Требования
- Операционная система: Rocky Linux 8.5 (Green Obsidian)
- Память: минимум 2 ГБ (для тестовой среды)
- CPU: 2 ядра
- Права root или sudo
Установка Java OpenJDK
Solr требует Java (минимум 1.8). В примере используется OpenJDK 11.
- Установите OpenJDK 11:
sudo dnf install java-11-openjdk java-11-openjdk-develПодтвердите установку, введя y и нажав Enter.
- Проверьте версию Java:
java --versionОжидаемый вывод будет похож на:
openjdk 11.0.13 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)Если Java установлена корректно — переходите к установке Solr.
Установка Solr на Rocky Linux
В этом руководстве демонстрируется установка Solr 8.11 (пример). Актуальную ссылку на бинарник уточняйте на официальном сайте Apache Solr.
- Перейдите в /opt и скачайте архив:
cd /opt/
wget https://downloads.apache.org/lucene/solr/8.11.0/solr-8.11.0.tgz- Извлеките инсталлятор из архива:
tar xzf solr-8.11.0.tgz solr-8.11.0/bin/install_solr_service.sh --strip-components=2После этого в каталоге /opt появится скрипт install_solr_service.sh.
- Запустите установщик (пример вызывается с правами sudo):
sudo bash ./install_solr_service.sh solr-8.11.0.tgz -i /opt -d /var/solr -u solr -s solr -p 8983Что делает инсталлятор (по умолчанию для этого примера):
- Устанавливает Solr в /opt/solr
- Данные Solr хранит в /var/solr
- Создаёт системного пользователя solr
- Создаёт systemd-сервис solr
- По умолчанию web-интерфейс доступен на порту 8983

Примечание: установщик может вывести предупреждение про лимиты открытых файлов и процессов — это будет исправлено в следующем разделе.
- Проверьте прослушиваемые порты (фильтр по java):
ss -aplnt | grep javaПример вывода:
LISTEN 0 50 [::ffff:127.0.0.1]:7983 *:* users:(("java",pid=4512,fd=48))
LISTEN 0 50 *:8983 *:* users:(("java",pid=4512,fd=157))- Если требуется перезапустить сервисы systemd или применить новую unit-файл конфигурации:
sudo systemctl daemon-reload
sudo systemctl enable --now solr
sudo systemctl status solrОбычно сервис solr будет отображаться как active (exited) — это ожидаемо, потому что сам процесс потом создаётся и управляется внутренними механизмами Solr.

Настройка лимитов (open files / max processes) для пользователя solr
Solr рекомендует высокий предел открытых файлов и процессов. Во время установки инсталлятор может показать предупреждения о лимитах. Установим значения 65000 для nofile и nproc.
- Отредактируйте /etc/security/limits.conf:
sudo nano /etc/security/limits.confДобавьте в конец файла:
solr soft nofile 65000
solr hard nofile 65000
solr soft nproc 65000
solr hard nproc 65000Сохраните и выйдите из редактора.
- Проверьте лимиты от имени пользователя solr:
sudo -u solr ulimit -aВ выводе вы увидите значения open files и max user processes, равные 65000.

- Перезапустите сервис Solr:
sudo systemctl restart solrТеперь предупреждения об ограничениях должны исчезнуть.
Проверка работы и открытие порта в firewalld
Чтобы получить доступ к веб-интерфейсу Solr, добавьте порт 8983 в firewalld и перезагрузите конфигурацию.
sudo firewall-cmd --add-port=8983/tcp --permanent
sudo firewall-cmd --reloadОткройте в браузере:
http://
Вы должны увидеть Solr Dashboard:

По умолчанию аутентификация отключена — это мы исправим далее.
Безопасность: включение Basic Authentication
Solr поддерживает плагин BasicAuth (solr.BasicAuthPlugin). Для включения создадим файл security.json в каталоге с данными Solr (/var/solr/data).
Важно: файл security.json содержит учётные данные в хеше. В примере показан готовый хеш и пароль для демонстрации. В боевой среде используйте собственные уникальные пароли и ключи.
- Перейдите в каталог данных и создайте security.json:
cd /var/solr/data/
sudo -u solr nano security.jsonВставьте следующий пример конфигурации:
{
"authentication":{
"blockUnknown": true,
"class":"solr.BasicAuthPlugin",
"credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="},
"realm":"My Solr users",
"forwardCredentials": false
},
"authorization":{
"class":"solr.RuleBasedAuthorizationPlugin",
"permissions":[{"name":"all", "role":"admin"}],
"user-role":{"solr":"admin"}
}
}Сохраните и выйдите.
- Перезапустите Solr для применения настроек:
sudo systemctl restart solr- Вернитесь в браузер и откройте http://
:8983/ — вы должны увидеть страницу входа.

Авторизация в примере: пользователь solr, пароль SolrRocks. После входа в разделе Security появятся активные плагины аутентификации и роли.

Создание первого Solr core из командной строки
Core — это отдельный индекс с собственными конфигурациями. Создание core можно выполнить через web-интерфейс или CLI.
- Сначала настройте клиентскую аутентификацию для команды solr. Скопируйте шаблон solr.in.sh.orig в solr.in.sh:
cd /opt/solr/bin/
cp solr.in.sh.orig solr.in.sh
sudo nano solr.in.shВ файле: раскомментируйте SOLR_AUTH_TYPE и назначьте basic, а также SOLR_AUTHENTICATION_OPTS с учётными данными:
SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"Сохраните и выйдите.
- Создайте core под владельцем solr:
su - solr -c "/opt/solr/bin/solr create -c new_core -n ConfigName"- Проверьте наличие core в панели управления Solr.

Рекомендации по безопасности и эксплуатации
- Не храните plaintext-пароли в общедоступных файлах. Для автоматизации используйте менеджеры секретов (Vault, AWS Secrets Manager и т.п.).
- Ограничьте доступ по firewall и настройте iptables/FirewallD так, чтобы порт 8983 был доступен только из доверенных сетей.
- Периодически обновляйте Solr и Java, чтобы закрывать уязвимости.
- Настройте мониторинг (метрики JMX/Prometheus) и логирование для контроля состояния JVM и задержек поиска.
Отладка и частые ошибки
- Solr не запускается / статус inactive: проверьте логи /var/solr/logs и systemd journal: sudo journalctl -u solr -b
- “Too many open files”: проверьте ulimit и /etc/security/limits.conf, перезапустите сессии и службу.
- Не удаётся подключиться к порту 8983: проверьте firewall-cmd и ss -aplnt | grep 8983.
- Аутентификация не срабатывает: убедитесь, что security.json корректен и что Solr читаем права владельца solr.
Playbook: пошаговые команды (мини-SOP)
- Подготовка сервера:
sudo dnf update -y
sudo dnf install wget nano -y- Установка Java и проверка:
sudo dnf install java-11-openjdk java-11-openjdk-devel -y
java --version- Установка Solr (см. раздел установки выше).
- Настройка лимитов в /etc/security/limits.conf.
- Открытие порта в firewalld и проверка доступа.
- Создание security.json, рестарт Solr.
- Настройка solr.in.sh для CLI и создание core.
Чек-листы по ролям
Администратор (инфраструктура):
- Настроить firewall и SELinux (если включено)
- Установить Java и Solr
- Внести лимиты в limits.conf
- Обеспечить бэкапы каталогов /var/solr и /opt/solr
Разработчик (пример индексации):
- Создать core с нужной схемой
- Проверить схемы (schema.xml / managed-schema)
- Написать и проверить индексирующие скрипты
DevOps/Безопасность:
- Настроить секретное хранилище для паролей
- Ограничить доступ к порту 8983
- Подключить метрики JVM и алерты
Критерии приёмки
- Solr отвечает на запросы на порту 8983 из доверенной сети
- Для доступа требуется аутентификация (страница логина отображается)
- Лимиты nofile и nproc у пользователя solr равны 65000
- Core создан и доступен в админке
Тесты и примеры проверки (Acceptance)
- Протестировать создание core: команда su - solr -c “/opt/solr/bin/solr create -c testcore -n ConfigName” должна завершиться успешно.
- Проверить прометей-метрики (если подключены): метрики JVM доступны и показывают heap usage.
- Протестировать отказоустойчивость: перезапустить службу systemd и убедиться, что Solr возвращает статус и веб-интерфейс доступен.
Шпаргалка команд (Cheat sheet)
- Установка Java: sudo dnf install java-11-openjdk java-11-openjdk-devel
- Установка Solr: sudo bash ./install_solr_service.sh solr-8.11.0.tgz -i /opt -d /var/solr -u solr -s solr -p 8983
- Перезапуск сервиса: sudo systemctl restart solr
- Статус сервиса: sudo systemctl status solr
- Проверка порта: ss -aplnt | grep java
- Открыть порт: sudo firewall-cmd –add-port=8983/tcp –permanent && sudo firewall-cmd –reload
Советы по миграции и совместимости
- При переходе между мажорными версиями Solr читайте релиз-ноты: возможны изменения в конфигурации solrconfig.xml и schema.
- Если у вас распределённый разверток (SolrCloud), планируйте миграцию с учётом zookeeper и настройки коллекций.
Дополнительные рекомендации по безопасности
- Используйте TLS/HTTPS для web UI и API запросов (настраивается через proxy: nginx/Apache или через TLS прямо в Solr).
- Не выставляйте порт 8983 напрямую в интернет без защиты.
- Ограничьте права файловой системы: /var/solr должен принадлежать solr:solr и иметь минимально необходимые права.
Частые ошибки и способы их исправления
- “permission denied” при чтении security.json: проверьте владельца и права файла: sudo chown solr:solr /var/solr/data/security.json && sudo chmod 600 /var/solr/data/security.json
- После изменения /etc/security/limits.conf не применяются значения: убедитесь, что вы перезапустили сессию пользователя solr или систему, и проверьте ulimit -a под пользователем solr.
Короткий глоссарий
- Core — отдельный индекс в Solr
- Schema — структура полей и типов в core
- Replica — копия шарда для отказоустойчивости
- Shard — сегмент коллекции в SolrCloud
Часто задаваемые вопросы (FAQ)
Как задать собственного администратора вместо примера?
Создайте новый пароль, сгенерируйте соответствующий хеш (инструменты есть в репозитории Solr) и обновите секцию credentials в /var/solr/data/security.json, затем перезапустите Solr.
Можно ли запускать Solr без systemd (как пользователь)?
Да, для разработки можно запускать Solr напрямую из /opt/solr/bin/solr start, но для продакшена рекомендуется systemd unit.
Как включить TLS для Solr?
Рекомендуется использовать обратный прокси (nginx) с SSL или настроить TLS напрямую в JVM/контейнере Solr. TLS в Solr требует дополнительной конфигурации сертификатов.
Как делать бэкап core?
Используйте snapshot/backup API Solr или делайте копирование каталога данных с остановленным процессом/используя файловые снимки (LVM, ZFS).
Итог
Поздравляем — вы установили Solr, настроили лимиты, включили Basic Authentication и создали первый core. Далее настройте мониторинг, резервное копирование и интеграцию с системами CI/CD.
Краткий план дальнейших шагов:
- Подключите TLS и менеджер секретов
- Настройте мониторинг и алерты
- Подумайте о SolrCloud/репликации при росте нагрузки
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента