Guia de tecnologias

Instalar e configurar Apache Solr no AlmaLinux 9

8 min read DevOps Atualizado 01 Oct 2025
Apache Solr no AlmaLinux 9: instalação e segurança
Apache Solr no AlmaLinux 9: instalação e segurança

logotipo do Apache Solr

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

instalando java openjdk

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.

instalando solr

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

start solr service

verify solr

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

configuring solr

Verifique o status novamente e confirme que a heap foi aplicada:

sudo service solr status

setup solr ulimit

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"

setup ulimit

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.

setup firewalld

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

apache solr dashboard

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.

Apache Solr login

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

solr authentication

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.

verify core

Troubleshooting comum

  • Erro de Java: verifique java --version e alternatives se múltiplas versões
  • Porta 8983 ocupada: lsof -i :8983 ou ss -ltnp para identificar o processo
  • Permissões do usuário solr: logs em /var/solr/logs/ ou journalctl -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)

  1. Atualizar sistema: sudo dnf update -y
  2. Instalar Java: sudo dnf install java-11-openjdk java-11-openjdk-devel -y
  3. Baixar Solr e extrair instalador
  4. Rodar install_solr_service.sh e iniciar serviço
  5. Ajustar /etc/default/solr.in.sh (heap, host)
  6. Ajustar ulimits e firewall
  7. Criar security.json e reiniciar
  8. 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ário solr reflete 65000 para nofile e nproc
  • 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
  • Teste 2: Autenticação
    • Passo: Login com solr:SolrRocks -> Esperado: acesso ao dashboard
  • 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
  • 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.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE