Su AlmaLinux 8 Lighttpd è una scelta sensata quando vuoi un web server leggero, con footprint ridotto e configurazione pulita. Non sostituisce Apache o Nginx in ogni scenario, ma su siti statici, applicazioni semplici o front-end davanti a PHP-FPM fa il suo dovere senza portarsi dietro più complessità del necessario.
Qui sotto trovi una procedura completa e verificabile: installazione, avvio del servizio, apertura del firewall, collegamento a PHP-FPM e controlli finali. L’obiettivo non è “farlo partire”, ma metterlo in piedi in modo che resti stabile e prevedibile dopo il primo reboot.
1. Verificare lo stato del sistema prima di toccare il web server
Prima di installare pacchetti, conviene capire se il nodo è sano e se ci sono vincoli già presenti: spazio disco, repository attivi, conflitti con altri web server e stato del firewall. In produzione questi dettagli fanno differenza, soprattutto quando il problema non è Lighttpd ma il contorno.
Controlla almeno questi punti:
df -h / /var /tmpSe una delle partizioni è quasi piena, installare e poi testare il web server è poco utile: i log, la cache e i file temporanei possono fallire subito dopo il deploy.
systemctl status firewalld --no-pagerSe il firewall è attivo, va aperta la porta HTTP prima di considerare il servizio “raggiungibile”.
rpm -q httpd nginx lighttpdIl comando serve a capire se esiste già un web server che potrebbe occupare la porta 80. Se Apache o Nginx sono installati e in ascolto, Lighttpd non potrà bindare la stessa porta senza un cambio di configurazione.
2. Installare Lighttpd dai repository di AlmaLinux
Su AlmaLinux 8, Lighttpd è in genere disponibile dai repository standard o da EPEL a seconda della configurazione del sistema. La strada corretta è verificare i metadati dei repository prima di forzare installazioni manuali o pacchetti scaricati a mano.
Abilita EPEL se necessario e installa il pacchetto:
sudo dnf install -y epel-releasesudo dnf install -y lighttpdSe il pacchetto non viene trovato, non improvvisare con RPM presi altrove: prima verifica quali repository sono attivi e se EPEL è realmente disponibile sul nodo.
dnf repolistIl risultato atteso è la presenza di un repository che contenga Lighttpd. Se manca, la chiusura del gap è lì: repository non abilitato, mirror non aggiornato o policy locale che blocca l’accesso ai pacchetti.
3. Avviare e abilitare il servizio systemd
Una volta installato, il servizio va avviato e reso persistente al boot. Su AlmaLinux 8 il controllo passa da systemd, quindi è inutile limitarsi al solo avvio manuale.
sudo systemctl enable --now lighttpdVerifica subito lo stato:
systemctl status lighttpd --no-pagerLo stato atteso è active (running). Se vedi failed, il passo successivo non è riavviare a caso ma leggere il journal.
journalctl -u lighttpd -b --no-pagerQui trovi errori di configurazione, problemi di permessi o conflitti sulla porta in ascolto. È il punto più rapido per separare un errore di sintassi da un problema di rete o di file system.
4. Aprire il firewall per HTTP e, se serve, HTTPS
Se firewalld è attivo, senza apertura della porta il server può essere in ascolto ma restare irraggiungibile dall’esterno. Questo è uno dei casi classici in cui il servizio sembra “rotto” mentre il problema è solo a livello di filtering.
sudo firewall-cmd --permanent --add-service=httpsudo firewall-cmd --permanent --add-service=httpssudo firewall-cmd --reloadControlla la configurazione effettiva:
firewall-cmd --list-servicesSe stai esponendo solo HTTP in fase iniziale, apri solo quella porta. Minimizzare la superficie d’attacco è una scelta migliore del classico “apro tutto e poi vedo”.
5. Capire dove vive la configurazione di Lighttpd
Su AlmaLinux la configurazione principale si trova in genere in /etc/lighttpd/lighttpd.conf, con eventuali moduli e frammenti aggiuntivi sotto /etc/lighttpd/conf.d/. Prima di cambiare qualcosa, fai una copia di lavoro o usa un controllo versione locale se il server è gestito con discipline operative serie.
Il controllo sintattico va fatto prima del reload:
lighttpd -tt -f /etc/lighttpd/lighttpd.confSe il comando restituisce errori, correggerli è più veloce che cercare la causa a runtime. Lighttpd è abbastanza schietto nei messaggi di validazione: sfruttalo.
6. Configurazione minima per servire contenuti statici
La configurazione base può essere molto semplice. In molti casi basta definire la document root e verificare che il modulo di access log sia attivo. Un esempio essenziale:
server.document-root = "/var/www/lighttpd"
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"
server.port = 80Crea la directory del sito e un file di test:
sudo mkdir -p /var/www/lighttpd
echo '<h1>Lighttpd su AlmaLinux 8</h1>' | sudo tee /var/www/lighttpd/index.htmlQui il punto non è il contenuto, ma la verifica del flusso end-to-end: filesystem, permessi, servizio e risposta HTTP.
Imposta i permessi in modo coerente con l’utente del servizio. Su molte installazioni Lighttpd gira come lighttpd o nobody, ma non dare per scontato il nome: leggi il file di unità o la configurazione effettiva se hai dubbi.
grep -E '^(server.username|server.groupname)' /etc/lighttpd/lighttpd.confSe il processo non ha permessi di lettura sulla document root, il sintomo sarà un 403 o un errore nei log, non un messaggio elegante a video.
7. Integrare PHP-FPM invece di usare moduli vecchi
Per applicazioni PHP la scelta più pulita è Lighttpd davanti a PHP-FPM, non CGI vecchio stile. È più semplice da mantenere, più veloce da diagnosticare e più coerente con un stack moderno su AlmaLinux 8.
Installa PHP-FPM e un set minimo di moduli utili:
sudo dnf install -y php-fpm php-cli php-mysqlnd php-opcacheAbilita e avvia PHP-FPM:
sudo systemctl enable --now php-fpmVerifica che il socket sia presente:
ls -l /run/php-fpm/www.sockSe il socket non esiste, il problema è PHP-FPM, non Lighttpd. In quel caso leggi il journal del servizio PHP:
journalctl -u php-fpm -b --no-pagerPer collegare Lighttpd a PHP-FPM, abilita i moduli FastCGI necessari. In molte installazioni basta includere una configurazione simile:
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
((
"socket" => "/run/php-fpm/www.sock",
"broken-scriptfilename" => "enable"
))
)La sintassi esatta può variare in base alla versione del pacchetto e ai moduli caricati. Se il file di configurazione locale include già un profilo FastCGI, adattalo invece di duplicarlo. Duplicare blocchi simili è un modo rapido per generare errori ambigui al riavvio.
8. Testare PHP con un file controllato
Una volta collegato PHP-FPM, crea un file minimale per verificare l’esecuzione dinamica. Evita script complessi: qui serve solo confermare che il passaggio web server → FastCGI → PHP funzioni.
cat <<'EOF' | sudo tee /var/www/lighttpd/info.php
<?php phpinfo();
EOFApri http://IP_DEL_SERVER/info.php dal browser o usa curl:
curl -I http://127.0.0.1/info.phpIl risultato atteso è HTTP/1.1 200 OK. Se ottieni 404, la document root non è quella prevista. Se ottieni 403, quasi sempre è una questione di permessi o contesto SELinux. Se ottieni 503, il backend FastCGI non sta rispondendo.
9. SELinux: il dettaglio che spesso blocca tutto
Su AlmaLinux 8 SELinux è normalmente in enforcing. Questo è un bene, ma significa che i permessi Unix da soli non bastano. Se Lighttpd deve leggere una document root non standard, il contesto SELinux può impedirlo anche quando owner e mode sembrano corretti.
Controlla il contesto dei file:
ls -Z /var/www/lighttpdSe serve un contesto web standard, ripristina quello corretto:
sudo restorecon -Rv /var/www/lighttpdPer capire se SELinux sta davvero bloccando qualcosa, cerca gli AVC nel journal o nel log audit:
sudo ausearch -m AVC,USER_AVC -ts recentSe emergono denials, il fix corretto è adattare contesti, boolean o policy, non disattivare SELinux per comodità. Disabilitarlo sposta il problema e allarga la superficie d’attacco.
10. Rendere la configurazione più robusta
Una volta che il servizio risponde, conviene sistemare alcuni dettagli che evitano problemi futuri. Il primo è il log: senza access log ed error log chiari, il troubleshooting diventa lento e sporco.
Il secondo è il binding. Se il nodo deve servire più siti, valuta virtual host espliciti invece di accumulare eccezioni nella configurazione principale. Meno logica sparsa nel file base significa meno errori al reload.
Il terzo è il controllo della sintassi prima di ogni reload. Un semplice script di validazione o un hook operativo che esegue lighttpd -tt -f /etc/lighttpd/lighttpd.conf riduce parecchio gli incidenti da typo.
Se vuoi un minimo di hardening, valuta anche:
11. Verifica finale con comandi pratici
La verifica finale deve essere semplice e ripetibile. Non serve una suite di test pesante per confermare che il servizio base sia sano.
systemctl is-active lighttpdAtteso: active.
ss -ltnp | grep ':80'Atteso: processo lighttpd in ascolto su 0.0.0.0:80 o sull’IP previsto.
curl -I http://127.0.0.1Atteso: codice 200 o 301 coerente con la tua configurazione.
tail -n 20 /var/log/lighttpd/access.log
tail -n 20 /var/log/lighttpd/error.logAtteso: richiesta registrata senza errori PHP o denial SELinux.
12. Rollback operativo se qualcosa non torna
Se dopo l’installazione il nodo non si comporta come previsto, il rollback minimo è fermare Lighttpd, disabilitarlo al boot e ripristinare eventuali file di configurazione dalla copia fatta prima delle modifiche.
sudo systemctl disable --now lighttpdSe hai cambiato /etc/lighttpd/lighttpd.conf, ripristina la versione precedente e rilancia solo il test di sintassi, non direttamente il servizio:
lighttpd -tt -f /etc/lighttpd/lighttpd.confQuesto approccio tiene basso il blast radius: niente modifiche ai dati, niente interventi sul database e nessun cambio irreversibile se il problema è solo nella configurazione del web server.
Assunzione operativa: il nodo è un server AlmaLinux 8 standard con accesso root o sudo, repository raggiungibili e nessun web server alternativo che debba restare in ascolto sulla stessa porta.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.