Installare e configurare 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
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.
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
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
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"
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.
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.
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.
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.
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.
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)
- Leggi le note di rilascio della versione di Solr.
- Testa l’aggiornamento in ambiente di staging con dump del tuo indice.
- Prepara backup completo dei dati e della configurazione.
- Metti in maintenance mode le applicazioni che scrivono sul cluster.
- Aggiorna i nodi uno alla volta; verifica salute e replicazione tra upgrade.
- 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
- Stima documenti e dimensione media per documento.
- Calcola spazio di storage: indice + replicate + overhead (~1.2–2x a seconda di analisi).
- Determina QPS atteso per query e write.
- 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.
Materiali simili

Memory integrity disattivata in Windows: cause e soluzioni

Installare ONLYOFFICE su Manjaro (v6.1)

Windows 11: creare USB avviabile dal Prompt

Scaricare qualsiasi video da Internet

Pixlr: Massimizza la creatività nell'editing
