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 --version
A 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 -y
Baixe 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.tgz
Extraia apenas o instalador do pacote:
tar xzf solr-9.2.1.tgz solr-9.2.1/bin/install_solr_service.sh --strip-components=2
Você 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.tgz
Quando 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 start
Verifique 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.sh
Defina 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.conf
Adicione no final:
solr soft nofile 65000
solr hard nofile 65000
solr soft nproc 65000
solr hard nproc 65000
Apó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 restart
Se 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-all
Se 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.json
Cole 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 restart
Apó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.sh
Descomente e defina:
SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"
Reinicie o serviço Solr para aplicar:
sudo service solr restart
Crie 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 --version
ealternatives
se múltiplas versões - Porta 8983 ocupada:
lsof -i :8983
ouss -ltnp
para identificar o processo - Permissões do usuário solr: logs em
/var/solr/logs/
oujournalctl -u solr
podem 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.log
e, 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/data
Abordagens 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.sh
e iniciar serviço - Ajustar
/etc/default/solr.in.sh
(heap, host) - Ajustar ulimits e firewall
- Criar
security.json
e 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_core
foi criado e aparece no painel ulimit -aH
para o usuáriosolr
reflete 65000 paranofile
enproc
- 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 backup
ou 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

Integrar Dropbox com Pages/Keynote/Numbers no iPad

Como colocar vídeo em loop no iPhone

Toques personalizados no iPhone com iOS 26

Corrigir Integridade de memória desativada no Windows

ONLYOFFICE no Manjaro: instalação v6.1
