Guida alle tecnologie

Installare e configurare Apache Solr su AlmaLinux 9

9 min read Guide tecniche Aggiornato 01 Oct 2025
Installare Apache Solr su AlmaLinux 9
Installare Apache Solr su AlmaLinux 9

TL;DR

Questa guida mostra come installare Apache Solr 9.2.1 su AlmaLinux 9, configurare Java OpenJDK 11, impostare heap, ulimits, firewall e autenticazione di base. Include checklist, best practice di sicurezza, troubleshooting e script di esempio.

Introduzione

Apache Solr (da ora Solr) è una piattaforma di ricerca enterprise basata sulla libreria Apache Lucene. Solr è open source, scritta in Java, e offre indicizzazione distribuita, alta disponibilità tramite replica e tolleranza ai guasti. In questa guida impari a installare Solr su un server AlmaLinux 9, a configurare la memoria JVM (heap), i limiti di sistema (ulimits), il firewall e l’autenticazione di base.

Definizione rapida: Solr è un motore di ricerca RESTful pensato per applicazioni che richiedono ricerche full‑text, faceting, e risultati scalabili.

Cosa contiene questa guida

  • Prerequisiti e raccomandazioni hardware
  • Installazione di OpenJDK 11
  • Installazione di Apache Solr 9.2.1 tramite pacchetto binario
  • Ottimizzazioni: heap, shm/nr_hugepages, ulimits
  • Configurazione firewall (firewalld)
  • Abilitare autenticazione basic
  • Creare il primo core/index
  • Best practice di sicurezza, backup e monitoraggio
  • Checklist per ruoli, playbook di aggiornamento e rollback
  • Troubleshooting e casi di test

Prerequisiti

  • Un server AlmaLinux 9 con minimo 2–4 GB RAM. L’esempio usa un server chiamato almalinux9 con 8 GB di RAM.
  • Un utente non-root con privilegi sudo.
  • Accesso alla rete per scaricare pacchetti e il bundle Solr.

1) Installare Java OpenJDK 11

Solr 9.x richiede Java 11 o superiore. Qui installiamo OpenJDK 11 dall’appstream di AlmaLinux.

Esegui:

sudo dnf install java-11-openjdk java-11-openjdk-devel

Verifica l’installazione:

java --version

Schermata installazione OpenJDK

ALT immagine: Schermata di terminale che mostra l’installazione di OpenJDK su AlmaLinux

Se il comando mostra Java 11, sei pronto per procedere.

2) Scaricare e installare Apache Solr 9.2.1

Installa dipendenze utili:

sudo dnf install curl lsof chkconfig -y

Scarica il pacchetto binario Solr 9.2.1:

curl -qO https://downloads.apache.org/solr/solr/9.2.1/solr-9.2.1.tgz

Estrai lo script di installazione:

tar xzf solr-9.2.1.tgz solr-9.2.1/bin/install_solr_service.sh --strip-components=2

Dovresti vedere lo script install_solr_service.sh nella directory corrente.

Esegui l’installer:

sudo bash ./install_solr_service.sh solr-9.2.1.tgz

Al termine vedrai un output simile che conferma l’avvio del servizio. Solr di default usa la porta 8983 e SOLR_HOME è /var/solr/data.

Schermata installazione Solr

ALT immagine: Output dell’installer che mostra la creazione del servizio Solr e la porta predefinita

Se un processo Solr è in esecuzione e vuoi fermarlo momentaneamente:

kill -9 12084

Quindi avvia il servizio gestito:

sudo service solr start

Controlla lo stato:

sudo service solr status

Schermata avvio servizio Solr

ALT immagine: Stato del servizio Solr mostrato in un terminale

3) Ottimizzare l’installazione di Solr

In questo esempio imposteremo l’heap massimo a 4g e useremo un IP interno 192.168.10.15.

Aumenta i parametri kernel necessari per memoria condivisa e hugepages:

sudo echo 4294967295 > /proc/sys/kernel/shmmax
sudo echo 1536 > /proc/sys/vm/nr_hugepages

Modifica le impostazioni di avvio di Solr:

sudo nano /etc/default/solr.in.sh

Cambia e/o decommenta i parametri seguenti (adatta SOLR_HEAP alla RAM del server):

SOLR_HEAP="4g"
SOLR_HOST="192.168.10.15"
SOLR_JETTY_HOST="192.168.10.15"

Salva e chiudi. Riavvia Solr per applicare le modifiche:

sudo service solr restart

Verifica lo stato per confermare il nuovo heap:

sudo service solr status

Schermata configurazione Solr

ALT immagine: Terminale che mostra il riavvio del servizio Solr dopo la modifica del file di configurazione

Note importanti sulla memoria:

  • Impostare SOLR_HEAP troppo alto può causare swap o OOM sul sistema. Non superare ~50–75% della RAM fisica per l’heap sul nodo dedicato a Solr.
  • Hugepages può migliorare la stabilità della JVM in carichi molto elevati.

4) Configurare ulimits e firewalld

Solr richiede limiti alti per file aperti e processi. Modifica /etc/security/limits.conf:

sudo nano /etc/security/limits.conf

Aggiungi alla fine:

solr   soft   nofile   65000
solr   hard   nofile   65000
solr   soft   nproc    65000
solr   hard   nproc    65000

Verifica i limiti come utente solr:

sudo -H -u solr bash -c "ulimit -aH"

Schermata ulimit

ALT immagine: Output di ulimit che mostra i valori massimi per l’utente solr

Riavvia il servizio Solr per rimuovere eventuali warning:

sudo service solr restart

Apri la porta 8983 nel firewall:

sudo firewall-cmd --add-port=8983/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Dovresti vedere 8983 nella lista.

Schermata firewalld

ALT immagine: Output di firewall-cmd che include la regola per la porta 8983

Ora puoi aprire il browser su http://192.168.10.15:8983/ per vedere l’interfaccia di amministrazione Solr.

Dashboard Apache Solr

ALT immagine: Pannello di amministrazione di Apache Solr che mostra i core e lo stato del cluster

5) Abilitare l’autenticazione Basic

Per impostazione predefinita Solr non ha autenticazione. Per un ambiente di produzione è essenziale proteggere l’interfaccia e l’API.

Crea il file security.json in /var/solr/data/:

sudo nano /var/solr/data/security.json

Inserisci (esempio con utente solr e password SolrRocks):

{
  "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"}
  }
}

Salva ed esci. Riavvia Solr:

sudo service solr restart

Apri il browser e visita http://192.168.10.15:8983/. Dovresti vedere la pagina di login.

Login Apache Solr

ALT immagine: Schermata di login di Apache Solr che richiede credenziali

Accedi con solr / SolrRocks. Nelle impostazioni di Security vedrai il plugin basic_auth abilitato.

Solr Authentication

ALT immagine: Panoramica impostazioni di sicurezza che mostra il plugin basic_auth attivo

Nota: sostituisci le credenziali d’esempio con password sicure e, preferibilmente, usa un vault o un secret manager.

6) Creare il primo index (core)

Aggiungi le opzioni di autenticazione al file di ambiente per le operazioni CLI:

sudo nano /etc/default/solr.in.sh

Decommenta e imposta:

SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"

Salva ed esci. Riavvia Solr (comando corretto):

sudo service solr restart

Crea un core di esempio chiamato test1_core:

su - solr -c "/opt/solr/bin/solr create -c test1_core -n Test1Core"

Dovresti vedere: “Created new core test1_core”.

Verifica dal pannello di amministrazione sotto Core Admin che test1_core sia presente.

Verifica core

ALT immagine: Schermata Core Admin che mostra il core test1_core disponibile

Best practice di sicurezza e privacy

  • Non esporre l’interfaccia di amministrazione su Internet senza un proxy autenticato (es. VPN, bastion host o proxy con autenticazione mutua TLS).
  • Usa HTTPS/TLS tra client e Solr. Metti Solr dietro un proxy NGINX/HAProxy con TLS terminazione o usa Jetty con certificati.
  • Minimizza i permessi: crea ruoli e utenti separati per amministrazione e sola lettura.
  • Se indicizzi dati sensibili (PII), applica mascheramento o hashing e limita l’accesso per conformità GDPR.
  • Mantieni i backup dei file di configurazione e degli schemi in un repository sicuro.

Monitoraggio e metriche (consigli qualitativi)

Metriche chiave da monitorare:

  • Heap utilizzato vs heap massimo (JVM memory)
  • GC pause time e frequenza
  • Latency di ricerca e query per secondo (QPS)
  • Latenza di indicizzazione
  • Numero di documenti e dimensione dei segmenti
  • File descriptors e open files
  • Load CPU e uso I/O disco

Strumenti tipici: Prometheus per scraping, JMX exporter per JVM, Grafana per dashboard, e alerting via PagerDuty/Slack.

Backup e ripristino (linee guida)

  • Esegui snapshot regolari dei core usando le API di Solr o snapshot a livello di filesystem se il filesystem/volume supporta snapshot coerenti.
  • Verifica i backup periodicamente in un ambiente di staging.
  • Conserva le configurazioni (conf/managed-schema) in SCM.

Esempio rapido: esportare un core (metodo semplice):

/opt/solr/bin/solr create_core -c backup_core -d /path/to/config
# Oppure usare API di snapshot in cluster (se in SolrCloud)

Nota: le procedure variano se usi Solr standalone o SolrCloud.

Playbook di aggiornamento e rollback (SOP sintetico)

  1. Leggi le note di rilascio della versione di Solr.
  2. Testa l’aggiornamento in ambiente di staging con dump del tuo indice.
  3. Prepara backup completo dei dati e della configurazione.
  4. Metti in maintenance mode le applicazioni che scrivono sul cluster.
  5. Aggiorna i nodi uno alla volta; verifica salute e replicazione tra upgrade.
  6. Se qualcosa va storto, ripristina snapshot o riporta il nodo a una snapshot del volume.

Criteri di arresto: se dopo l’upgrade i tempi di risposta aumentano > 50% o error rate supera soglia, rollback.

Checklist per ruoli

Amministratore di sistema:

  • Installare Java corretto
  • Configurare SOLR_HEAP coerente con RAM
  • Configurare ulimits e kernel parameters
  • Impostare firewall e TLS

Sviluppatore/Index engineer:

  • Definire schema e field types
  • Creare core/test e testare query
  • Validare mapping e tokenization

Sicurezza/Compliance:

  • Rivedere access control e ruoli
  • Verificare logging e retention
  • Ispezionare eventuale PII indicizzato

Troubleshooting comune

  • Solr non parte: controlla i log in /var/solr/logs/ e verifica che Java sia compatibile.
  • Errori di memoria/Garbage Collection: riduci heap o aggiusta GC flags (es. G1GC) e monitora pause.
  • Ulimit warnings: ricontrolla /etc/security/limits.conf e che il demone venga avviato come utente solr.
  • API non accessibili: controlla firewall, SELinux e binding host (SOLR_HOST/SOLR_JETTY_HOST).

Test di accettazione suggeriti

  • Verificare che la pagina /solr risponda con 200 dopo il login.
  • Creare, aggiornare, cancellare documenti e misurare latenza < soglia operativa.
  • Verificare che il core test1_core sia visibile e che le query restituiscano risultati coerenti.

Alternative di autenticazione e confronto rapido

  • BasicAuth: semplice, veloce, adatto a test o ambienti limitati. Non sicuro senza TLS.
  • Kerberos: integrazione enterprise single sign-on, più complesso da configurare.
  • JWT/OAuth: utile per servizi e integrazione con identity provider moderni.
  • RuleBasedAuth + ACL: controllo granulare su operazioni e risorse.

Scegli in base alla tua infrastruttura e ai requisiti di sicurezza.

Migrazione e compatibilità

  • Versioni Solr 9.x richiedono Java 11+.
  • Pianifica test di compatibilità degli schemi e delle configurazioni tra versioni maggiori.
  • In caso di migrazione da SolrCloud a standalone o viceversa, valuta i cambiamenti nell’architettura di replica e nel modo in cui gestisci gli shard.

Mini‑metodologia per capacity planning

  1. Stima documenti e dimensione media per documento.
  2. Calcola spazio di storage: indice + replicate + overhead (~1.2–2x a seconda di analisi).
  3. Determina QPS atteso per query e write.
  4. Scegli CPU, RAM (heap + OS), disco (preferibile NVMe) per latenza target.

1‑line glossary

  • Core: unità logica di Solr che contiene l’indice e la configurazione.
  • SOLR_HOME: directory principale dove risiedono i dati e i core di Solr.
  • Heap: memoria JVM riservata a Solr.
  • ulimit: limiti di sistema per processi e file aperti.

Esempi utili e snippet

Controllo rapido dello stato Solr:

curl -u solr:SolrRocks http://127.0.0.1:8983/solr/admin/cores?action=STATUS

Lista metriche JMX (esportazione via JMX exporter per Prometheus):

  • jvm/memory/heap_used
  • jvm/gc/pause_time
  • solr/core//index/numDocs

Backup via rsync (esempio concettuale):

rsync -avz /var/solr/data/ your-backup-host:/backups/solr/$(date +%F)/

Quando questa guida non è sufficiente

  • Ambiente SolrCloud con autenticazione a livello di cluster richiede passi aggiuntivi (zk ensemble, collection API).
  • Deploy su Kubernetes o container richiede Helm chart o immagini ufficiali e configurazioni per readiness/liveness e persistenza.

Conclusione

Congratulazioni — hai installato e configurato Apache Solr 9.2.1 su AlmaLinux 9. Hai impostato Java 11, configurato heap e parametri kernel, aggiornato ulimits, aperto il firewall, abilitato l’autenticazione basic e creato il primo core di test. Usa le checklist e i playbook qui sopra per passare a produzione in modo controllato.

Riepilogo veloce

  • Verifica Java 11.
  • Installa Solr con lo script ufficiale.
  • Configura SOLR_HEAP e host binding in /etc/default/solr.in.sh.
  • Imposta ulimits e kernel params.
  • Proteggi l’interfaccia con TLS e autenticazione.
  • Monitora heap, GC e latenza.

Note importanti

Important: non usare credenziali di esempio in produzione. Proteggi backup e segreti.

Autore
Redazione

Materiali simili

Memory integrity disattivata in Windows: cause e soluzioni
Windows Security

Memory integrity disattivata in Windows: cause e soluzioni

Installare ONLYOFFICE su Manjaro (v6.1)
Linux Guide

Installare ONLYOFFICE su Manjaro (v6.1)

Windows 11: creare USB avviabile dal Prompt
Windows

Windows 11: creare USB avviabile dal Prompt

Scaricare qualsiasi video da Internet
Guide.

Scaricare qualsiasi video da Internet

Pixlr: Massimizza la creatività nell'editing
Editing fotografico

Pixlr: Massimizza la creatività nell'editing

Installare Apache Solr su AlmaLinux 9
Guide tecniche

Installare Apache Solr su AlmaLinux 9