Tutorial > Come installare un web server Lighttpd su Ubuntu 18.04

Come installare un web server Lighttpd su Ubuntu 18.04

Pubblicato il: 20 ottobre 2019

Lighttpd Ubuntu Web Server

Lighttpd è un web server open source noto per le sue ottime performance su molti ambienti. Grazie alla basse richieste hardware riesce infatti a gestire un elevato traffico dati anche su sistemi poco performanti.

In questo tutorial vedremo passo passo come installare e configurare Lighttpd su Ubuntu 18.04 e come ottimizzare al massimo le sue performance attivando la compressione dati, configurando un host virtuale e migliorando i parametri del keep-alive.

Per prima cosa dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Installazione di Lighttpd

Per prima cosa aggiorna i repository della distribuzione, per essere sicuro di scaricare la versione più aggiornata di Lighttpd:

$ sudo apt update 

Quindi procedi all’installazione lanciando il seguente comando:

$ sudo apt install lighttpd

Una volta completata l’installazione, il servizio Lighttpd è pronto per essere abilitato e avviato, ma prima potrebbe essere necessario abilitare Lighttpd all’ascolto anche su indirizzi ipv4.

Apri il file di configurazione presente in /etc/lighttpd/lighttpd.conf utilizzando il tuo editor di testo preferito (vim / nano).

All’interno del file troverai una sezione commentata, che configura l’utilizzo delle porte:

##

## bind to a specific IP

##

server.bind = "localhost"

Quindi procedi a modificarla come segue:

##

## bind to a specific IP

##

#

server.bind = "localhost"

$SERVER["socket"] == "0.0.0.0" { }

Arrivato a questo punto è tutto pronto per avviare il servizio:

$ sudo systemctl start lighttpd

Puoi anche installare il servizio in modo da avviarlo automaticamente all’avvio del sistema:

$ sudo systemctl enable lighttpd

Configurazione del Firewall

Se sul tuo sistema è presente un firewall, allora dovrai impostarlo per abilitare il traffico HTTP e il traffico HTTPS verso la tua macchina.

Per consentire il traffico HTTP (Porta 80) e HTTPS (Porta 443), dovrai utilizzare i seguenti comandi:

$ sudo ufw allow 80

$ sudo ufw allow 443

Una volta completati tutti gli step puoi testare il funzionamento del web server visitando l'indirizzo http://<IP.DEL.SERVER> o nel caso di server locale http://localhost. Se la procedura é stata eseguita correttamente verrà mostrata la schermata di default di Lighttpd.

image1.png

Document Root

Per modificare i contenuti visibili sul web server ti basta modificare il contenuto della cartella /var/www/lighttpd, come anche indicato nel file di configurazione /var/etc/lighttpd.conf:

var.server_root = "/var/www"
                ##

## Document root

##

server.document-root = server_root + "/lighttpd"

Per maggiori informazioni sul file di configurazione, puoi trovare tutte le opzioni disponibili sulla documentazione ufficiale: https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ConfigurationOptions.

Attivazione della compressione dati

Una tra le prime ottimizzazioni che puoi attivare su Lighttpd è la compressione dei dati prima dell’invio: questo ti permetterà di ridurre il consumo di banda da parte del tuo server web, oltre che a velocizzare l’invio dei dati.

Per attivare la compressione apri il file presente al percorso /etc/lighttpd/modules.conf.

Troverai la sezione dedicata al modulo mod_compress:

##

## mod_compress

##

#include "conf.d/compress.conf"

Ti basta decommentare la riga di inclusione per far leggere il file di configurazione del modulo, e quindi attivarlo:

##

## mod_compress

##

include "conf.d/compress.conf"

Prima di mettere in funzione il modulo devi creare la cartella dove normalmente Lighttpd memorizza i file compressi per non rigenerarli in un momento successivo: 

$ sudo mkdir /var/cache/lighttpd

$ sudo mkdir /var/cache/lighttpd/compress

Ora cambia il proprietario della cartella per dare i permessi a Lighttpd:

$ sudo chown lighttpd:lighttpd /var/cache/lighttpd/compress/

A questo punto puoi riavviare il servizio:

$ sudo systemctl restart lighttpd

Installazione di un virtual host

Di seguito vedremo come configurare un host virtuale utilizzando come esempio un dominio di fantasia (tuodominio.it). Per prima cosa bisogna prepare le directory necessarie a ospitare il sito web:

mkdir -p /var/www/vhosts/tuodominio.it/htdocs

chown lighttpd:lighttpd /var/www/vhosts -R

Con i comandi mostrati sopra stai creando l’intero albero di directory e successivamente impostando come proprietario delle cartelle l’utente Lighttpd.

Normalmente Lighttpd non è abilitato alla lettura delle configurazioni di host virtuali. Devi quindi procedere all’abilitazione modificando la sezione sotto indicata all'interno del file /etc/lighttpd/lighttpd.conf:

#######################################################################

##

## custom includes like vhosts.

##

#include "conf.d/config.conf"

include "/etc/lighttpd/vhosts.d/*.conf" #abilitiamo la lettura dei virtual hosts

##

######################################################################

Adesso puoi creare un file specifico per il tuo dominio in /etc/lighttpd/vhosts.d/tuodominio_it.conf:

$HTTP["host"] == "tuodominio.it" {

  var.server_name = "tuodominio.it"
                  server.name = server_name
                  server.document-root = vhosts_dir + "/" + server_name + "/htdocs"

  ##

  ## use a seperate access log file

  ## At the moment you cant have different error log files.

  ##

  accesslog.filename          = log_root + "/" + server_name + "/access.log"

}

Una volta salvato il file, puoi riavviare Lighttpd per applicare le modifiche:

$ sudo systemctl restart lighttpd

Ottimizzazione del Keep-Alive

Per ottenere un’ulteriore ottimizzazione delle performance di Lighttpd, migliorare i parametri del keep-alive http può impattare positivamente nella gestione del traffico. I parametri di default del server sono i seguenti (presenti nel file /etc/lighttpd/lighttpd.conf ): 

server.max-keep-alive-idle = 5

server.max-keep-alive-requests = 16

server.max-read-idle = 60

server.max-fds = 2048

server.max-write-idle = 360

I parametri sopra indicati manterranno 16 connessioni attive per 5 secondi, anche se magari non sono più utilizzate dai client. Questo potrebbe comportare un esaurimento dei socket aperti simultaneamente (indicato come valore massimo in server.max-fds). In caso di elevato traffico potrebbe essere necessario restringere questi limiti:

server.max-keep-alive-idle = 4

server.max-keep-alive-requests = 4

server.max-read-idle = 30

server.max-write-idle = 120

Restringendo il tempo limite e il numero di richieste il web server chiuderà le connessioni più frequentemente e permetterà di gestire un traffico più elevato.

Una volta applicate le modifiche, ricordati di riavviare il servizio tramite: 

$ sudo systemctl restart lighttpd