Instalar e configurar Apache Solr no AlmaLinux 9

Apache Solr (Solr) é uma plataforma de busca empresarial baseada na biblioteca Apache Lucene. É open source, escrita em Java, e oferece alta disponibilidade, replicação, tolerância a falhas e desempenho robusto para aplicações corporativas. Este tutorial mostra como instalar e otimizar o Apache Solr em um servidor AlmaLinux 9, além de proteger a instância com autenticação básica e criar o primeiro índice (core).
O que você vai aprender
- Requisitos mínimos e preparação do sistema
- Instalar Java OpenJDK 11
- Baixar e instalar Apache Solr 9.2.1 a partir do binário
- Ajustar heap, limites de sistema (ulimits) e hugepages
- Configurar firewalld para permitir acesso ao painel
- Habilitar autenticação básica com security.json
- Criar um core de teste e validar a instalação
- Troubleshooting, segurança adicional e recomendações operacionais
Pré-requisitos
- Um servidor AlmaLinux 9 com pelo menos 2–4 GB de RAM (ex.: usado neste guia: hostname almalinux9 com 8 GB de RAM). Ajuste heap conforme memória disponível.
- Um usuário não-root com privilégios sudo
- Acesso à rede para baixar pacotes e liberar portas
1. Instalar Java OpenJDK 11
Apache Solr 9 requer Java 11 ou superior. Vamos instalar o OpenJDK 11 pelo repositório AppStream do AlmaLinux.
Execute:
sudo dnf install java-11-openjdk java-11-openjdk-devel
Verifique a versão do Java:
java --versionA saída deve confirmar que o Java 11 está instalado.
Dica: se tiver múltiplas versões do Java instaladas, use o comando sudo alternatives --config java para selecionar a versão padrão.
2. Baixar e instalar Apache Solr
Você pode instalar Solr usando o pacote binário oficial. Antes, instale utilitários necessários:
sudo dnf install curl lsof chkconfig -yBaixe o pacote binário da versão usada neste guia (9.2.1):
curl -qO https://downloads.apache.org/solr/solr/9.2.1/solr-9.2.1.tgzExtraia apenas o instalador do pacote:
tar xzf solr-9.2.1.tgz solr-9.2.1/bin/install_solr_service.sh --strip-components=2Você deverá ver o script install_solr_service.sh no diretório atual.
Em seguida, execute o instalador:
sudo bash ./install_solr_service.sh solr-9.2.1.tgzQuando a instalação terminar com sucesso, verá mensagens indicando que o serviço foi criado e iniciado.

O Solr, por padrão, roda na porta 8983 e usa SOLR_HOME em /var/solr/data.
Se precisar matar um processo manualmente (só em casos especiais):
kill -9 Inicie o serviço Solr (caso não esteja iniciado):
sudo service solr startVerifique o status:
sudo service solr status

Observação: em sistemas modernos com systemd em vez de scripts SysV, os comandos systemctl start solr / systemctl status solr também funcionam.
3. Otimizar a instalação do Apache Solr
Ajustes típicos para ambiente de produção incluem configurar a memória heap, hugepages e host de binding.
Ajuste shmmax e nr_hugepages (valores de exemplo):
sudo sh -c 'echo 4294967295 > /proc/sys/kernel/shmmax'
sudo sh -c 'echo 1536 > /proc/sys/vm/nr_hugepages'Edite o arquivo de configuração do Solr:
sudo nano /etc/default/solr.in.shDefina a heap do Solr para um valor adequado à memória do servidor. Regra prática: não alocar mais do que 50–75% da memória física ao heap, deixando espaço para o SO e page cache.
SOLR_HEAP="4g"Configure o host de binding (use IP interno) para evitar expor a interface administrativa na internet pública:
SOLR_HOST="192.168.10.15"
SOLR_JETTY_HOST="192.168.10.15"Salve e reinicie o serviço para aplicar as alterações:
sudo service solr restart
Verifique o status novamente e confirme que a heap foi aplicada:
sudo service solr status
Importante: após alterações em /proc/sys ou hugepages, um reboot pode ser necessário para efeitos persistentes entre reboots — considere adicionar parâmetros equivalentes em /etc/sysctl.conf ou arquivos em /etc/sysctl.d/.
4. Configurar ulimits e firewalld
Solr pode requerer muitos descritores de arquivo e processos. Ajuste /etc/security/limits.conf para o usuário solr:
sudo nano /etc/security/limits.confAdicione no final:
solr soft nofile 65000
solr hard nofile 65000
solr soft nproc 65000
solr hard nproc 65000Após salvar, verifique os limites do usuário solr:
sudo -H -u solr bash -c "ulimit -aH"
Reinicie o serviço Solr para que a nova configuração seja aplicada:
sudo service solr restartSe a mensagem de aviso do ulimit desaparecer, as mudanças foram aplicadas corretamente.
Abra a porta 8983 no firewall (firewalld):
sudo firewall-cmd --add-port=8983/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-allSe tudo estiver correto, a porta 8983 aparecerá na lista de regras.

Agora acesse o painel via navegador em http://192.168.10.15:8983/ (ou IP/hostname que você definiu).

Nota de segurança: para produção, exponha o painel apenas em redes internas ou atrás de um proxy reverso com TLS e autenticação.
5. Proteger o Solr com autenticação básica
Por padrão, o Solr é instalado sem autenticação. Uma das opções de proteção é a autenticação básica (BasicAuthPlugin). Neste exemplo, criaremos um arquivo security.json em /var/solr/data para ativá-la.
Crie o arquivo:
sudo nano /var/solr/data/security.jsonCole o conteúdo abaixo (exemplo que cria o usuário solr com senha SolrRocks). O campo credentials contém valores hash; mantenha a estrutura exatamente como abaixo se estiver seguindo este exemplo:
{
"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"}
}
}Salve e reinicie o Solr:
sudo service solr restartApós reiniciar, abra http://192.168.10.15:8983/ e você verá a tela de login. Insira o usuário solr e a senha SolrRocks para acesso ao painel.

No menu Segurança (Security) você confirmará que o plugin basic_auth está ativo.

Importante: não use senhas em texto claro em produção. Gere credenciais adequadas e armazene hashes seguros fora do diretório de dados, se possível.
6. Criar o primeiro índice (core)
Edite o arquivo de configuração para que o comando do cliente bin/solr funcione com autenticação básica:
sudo nano /etc/default/solr.in.shDescomente e defina:
SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"Reinicie o serviço Solr para aplicar:
sudo service solr restartCrie um core de teste chamado test1_core:
su - solr -c "/opt/solr/bin/solr create -c test1_core -n Test1Core"A saída deverá indicar Created new core test1_core.
No painel administrativo, acesse Core Admin e verifique se test1_core está listado.

Troubleshooting comum
- Erro de Java: verifique
java --versionealternativesse múltiplas versões - Porta 8983 ocupada:
lsof -i :8983ouss -ltnppara identificar o processo - Permissões do usuário solr: logs em
/var/solr/logs/oujournalctl -u solrpodem apontar erros - Ulimits não aplicados para sessões existentes: faça logout/login ou reinicie o sistema para garantir que PAM aplique
/etc/security/limits.conf - SELinux bloqueando recursos: verifique
ausearch/audit.loge, se necessário, crie regras ou ajuste contextos. Em ambientes controlados, considere manter SELinux em enforcing, mas teste politicamente suas regras.
Comandos úteis de diagnóstico:
sudo tail -n 200 /var/solr/logs/solr.log
journalctl -u solr --no-pager | tail -n 200
sudo -u solr ls -la /var/solr/dataAbordagens alternativas e escalabilidade
- SolrCloud: para clusters com replicação automática, sharding e coordenadores, use SolrCloud em vez de instância standalone.
- Contêineres: empacotar Solr em Docker/Kubernetes facilita deploys repetíveis e escalonamento. Use StatefulSets e PVs para dados persistentes.
- Hospedagem gerenciada: se operar infraestrutura não for desejável, considere serviços de search gerenciados (SaaS) compatíveis com APIs de busca.
Checklist por papel
Administrador de sistema (Ops):
- Instalar Java e Solr
- Configurar SOLR_HEAP e host de binding
- Ajustar ulimits e hugepages
- Configurar firewall e SELinux
- Implementar backup regular dos dados
Desenvolvedor:
- Validar esquema e managed-schema
- Criar configsets versionáveis
- Testar indexação e consultas no core de dev
Equipe de segurança:
- Habilitar autenticação e RBAC
- Forçar TLS/HTTPS no painel e APIs
- Restringir acesso ao painel administrativo por rede
- Revisar logs e alertas de acesso
Playbook de instalação rápida (SOP)
- Atualizar sistema:
sudo dnf update -y - Instalar Java:
sudo dnf install java-11-openjdk java-11-openjdk-devel -y - Baixar Solr e extrair instalador
- Rodar
install_solr_service.she iniciar serviço - Ajustar
/etc/default/solr.in.sh(heap, host) - Ajustar ulimits e firewall
- Criar
security.jsone reiniciar - Criar core de teste e validar
Rollback mínimo: se instalação falhar, pare o serviço com sudo service solr stop, restaure /etc/default/solr.in.sh e /var/solr/data/security.json a partir do backup e reinicie.
Critérios de aceitação
- O serviço Solr responde em
http://:8983/ - O dashboard exige autenticação e permite login com usuário configurado
- O core
test1_corefoi criado e aparece no painel ulimit -aHpara o usuáriosolrreflete 65000 paranofileenproc- Não há erros críticos nos logs de Solr após reinício
Testes e casos de aceitação
- Teste 1: Acesso ao painel
- Passo: Abrir
http://192.168.10.15:8983/-> Esperado: tela de login
- Passo: Abrir
- Teste 2: Autenticação
- Passo: Login com
solr:SolrRocks-> Esperado: acesso ao dashboard
- Passo: Login com
- Teste 3: Criar core
- Passo: Executar comando de criação -> Esperado: core criado com sucesso
- Teste 4: Consulta simples
- Passo: Indexar documento e executar query
q=*:*-> Esperado: documento retornado
- Passo: Indexar documento e executar query
- Teste 5: Persistência após reboot
- Passo: Reboot do nodo -> Esperado: Solr sobe e cores permanecem disponíveis
Segurança e hardening
- Sempre rode Solr atrás de um proxy reverso (nginx/HAProxy) com TLS obrigatória
- Restrinja acesso administrativo a redes internas ou VPN
- Use senhas fortes e rotação periódica de credenciais
- Habilite logging centralizado e alertas para falhas de autenticação
- Aplique atualizações de segurança do Java e do Solr regularmente
- Considere ativar Audit Logging para ações administrativas
Migração e compatibilidade
- Ao migrar entre versões do Solr, verifique compatibilidade do index (Lucene). Use utilitários oficiais de upgrade ou reindex quando necessário.
- Faça backup com
/opt/solr/bin/solr backupou copie fisicamente os diretórios de dados com parada controlada do serviço. - Ao usar SolrCloud, migre configsets e shards com cautela; pratique em ambiente de staging antes da migração em produção.
Fluxograma para escolher método de autenticação
flowchart TD
A[Precisa proteger Solr?] -->|Sim| B{Ambiente}
B --> C[Instância única e rede interna]
B --> D[Cluster ou exposição pública]
C --> E[Usar BasicAuth + firewall interno]
D --> F[Usar TLS + proxy reverso + autenticação federada
F --> G[LDAP/Kerberos/JWT conforme política]
A -->|Não| H[Deixar sem autenticação 'não recomendado']Glossário rápido
- Solr: Plataforma de busca baseada em Lucene.
- SolrCloud: Modo de cluster com sharding e réplica.
- Jetty: Servidor web embutido que executa Solr.
- Heap: Memória JVM alocada para Solr.
Dicas operacionais finais
- Monitore uso de heap, GC e latência de consultas (JMX, Prometheus + Grafana)
- Teste restores de backup para garantir planos de recuperação
- Documente configurações e segredos fora do servidor, em cofres seguros
- Para produção, prefira deployments automáticos via IaC e pipelines CI/CD
Conclusão
Parabéns — você instalou e configurou o Apache Solr no AlmaLinux 9, ajustou heap e ulimits, abriu a porta no firewall, habilitou autenticação básica e criou o primeiro core de teste. Use as seções de troubleshooting e segurança deste guia para maturar a sua implantação em direção a um ambiente de produção seguro e resiliente.
Resumo rápido:
- Instalação: Java 11 + Solr 9.2.1 via binário
- Otimização: SOLR_HEAP, hugepages, ulimits
- Segurança: BasicAuth, firewall, recomendações para TLS
- Operação: testes, backups e monitoramento
Nota: adapte todos os valores (heap, IP, portas) à sua topologia e política de segurança.
Materiais semelhantes
Instalar e usar Podman no Debian 11
Apt‑pinning no Debian: guia prático
Injete FSR 4 com OptiScaler em qualquer jogo
DansGuardian e Squid com NTLM no Debian Etch
Corrigir erro de instalação no Android