Torna al blog

Configurazione del server web Apache su un VPS Ubuntu o Debian

Configurazione del server web Apache su un VPS Ubuntu o Debian

Introduzione

Apache è attualmente il server web più utilizzato al mondo. Si tratta di un software open-source sviluppato oltre vent'anni fa e gestito da the Apache Software Foundation. A partire da settembre 2020, si stima che serva il 35% di tutto il traffico dei siti web nel mondo.

Gli sviluppatori preferiscono Apache per la sua velocità, sicurezza, affidabilità, robustezza e facilità di personalizzazione. Inoltre, Apache è in grado di soddisfare le esigenze di molti ambienti in quanto consente l'installazione di varie estensioni e moduli. Ciò è possibile grazie a un insieme di configurazioni che gli sviluppatori e gli amministratori di server possono modificare per scopi diversi. In questo tutorial, vi guideremo attraverso i file di configurazione generali e le opzioni che possono influire su diversi risultati sui server Ubuntu e Debian.

Debian e Ubuntu sono tra i sistemi operativi per server preferiti. I due hanno molte somiglianze. Ad esempio, entrambi utilizzano il gestore di pacchetti APT e i pacchetti DEB per l'installazione manuale. Gestiscono le impostazioni di Apache e la struttura delle directory in modo simile. Pertanto, dovreste essere in grado di seguire questo tutorial con uno qualsiasi dei due sistemi operativi. Per prima cosa, potete seguire questo tutorial per configurare un server Ubuntu in pochi passaggi.

Successivamente, accedete come utente non-root con privilegi sudo, e iniziamo!

Come installare Apache su Ubuntu and Debian

Se il vostro server non ha ancora Apache, potete installarlo facilmente usando un solo comando. Per prima cosa, eseguite il comando di aggiornamento:

Quindi, potete installare Apache immettendo il seguente comando:

Al termine dell'installazione, è possibile verificare la versione installata utilizzando il comando:

Al momento della stesura di questo tutorial, la versione era:

Apache Web Server

Successivamente, visitate l'indirizzo IP o il nome di dominio del vostro server. Dovreste essere in grado di vedere la pagina indice predefinita di Apache:

Apache Web Server

La gerarchia dei file di Apache nelle distribuzioni Ubuntu e Debian

Sia le distribuzioni Ubuntu che Debian utilizzano il gestore di pacchetti apt. Allo modo, quando si installa un pacchetto, questo crea gerarchie di file simili. Nel nostro caso, sia per Ubuntu che per Debian, Apache conserva i suoi file di configurazione all'interno della directory “/etc/apache2”. Entrate nella directory usando il seguente comando ed elencate il contenuto della directory:

Potete vedere l'output del comando nello screenshot qui sotto:

screenshot

È possibile vedere una serie di file e sottodirectory con cui si dovrebbe avere familiarità quando si configura un server Apache. Ecco la loro descrizione:

  • apache2.conf – È il file di configurazione principale per un server Apache. Inoltre, contiene tutte le configurazioni predefinite. Sebbene quasi tutte le configurazioni possano essere eseguite dall'interno di questo file, si consiglia sempre di utilizzare file designati separati per semplicità e per proteggere questo file predefinito da corruzioni.
  • conf-available – È la directory contenente file di configurazione locali aggiuntivi e file di altre applicazioni che non sono ancora associati ad alcun modulo. Le configurazioni in questa directory non sono attive a meno che non vengano abilitate. Il comando a2enconf  può abilitare un file di configurazione. Ecco il contenuto di questa directory:

Apache Web Server

  • conf-enabled – È la directory contenente configurazioni locali aggiuntive e file di configurazione di altre applicazioni associati ai relativi moduli. I file di configurazione in questa directory sono attivi e influenzano il comportamento di Apache. È possibile disabilitare un file di configurazione utilizzando il comando a2disconf. Ecco il contenuto di questa directory:

conf-enabled

  • envvars – È il file contenente le variabili d'ambiente di Apache2. Le variabili in questo file influenzano solo Apache e non sono correlate al sistema Linux. Ecco il contenuto del file:

envvars

  • magic – È il file contenente le istruzioni per determinare il tipo MIME di un file. Aiuta il server a determinare il tipo di un file.
  • mods-available – È la directory contenente i file di configurazione per caricare i moduli e configurarli. Tuttavia, non sono ancora abilitati. È possibile abilitarli utilizzando il comando a2enmod.
  • mods-enabled – È la directory contenente i file di configurazione per caricare i moduli e configurarli. Le configurazioni in questa directory sono già abilitate e si collegano ai moduli corrispondenti. È possibile disabilitare i moduli con il comando a2dismod. 
  • ports-conf – È il file che specifica le porte disponibili per gli host virtuali e le porte TCP su cui Apache è in ascolto.
  • sites-available – È la directory contenente i file di configurazione disponibili per gli host virtuali di Apache. Gli host virtuali consentono ad Apache di servire diversi siti web. I file in questa directory non sono ancora attivi. È possibile abilitare un file di host virtuale con il comando a2ensite.
  • sites-enabled – È la directory contenente i file di configurazione degli host virtuali attivati. Di solito contiene collegamenti simbolici ai file nella directory sites-available. È possibile disabilitare un file di host virtuale utilizzando il comando a2dissite.

Il design modulare dei file di configurazione di Apache consente di modificare e aggiungere file in base alle proprie esigenze.

Contenuto del file Apache2.conf

Il file in “/etc/apache2/apache2.conf” contiene i file di configurazione principali di Apache. Più specificamente, contiene le direttive di configurazione che forniscono le istruzioni al server. Si compone di tre sezioni per definire le configurazioni di processo del server globale, la configurazione del server predefinito, e quelle degli host virtuali .

Nei sistemi Ubuntu e Debian, la maggior parte del file contiene le configurazioni di processo del server globale. Verso la fine è possibile trovare le configurazioni per il server predefinito e gli host virtuali utilizzando la direttiva “Include” direttiva. Apache utilizza la direttiva “Include” per leggere altri file di configurazione e poi includerli nel file di configurazione corrente, a partire dal punto in cui appare la direttiva. Questo avviene all'avvio del server Apache.

Scorrendo fino in fondo al file apache2.conf, dovresti vedere diverse direttive di inclusione. Le direttive caricano le definizioni dei moduli nella directory mods-enabled, il file ports.conf, le configurazioni locali nella directory conf-enabled e le configurazioni degli host virtuali nella directory sites-enabled.

Sezione di configurazione del server globale

La sezione di configurazione del server globale contiene le impostazioni e le istruzioni che controllano il funzionamento globale di Apache. Presenta alcune direttive i cui valori possono essere modificati per cambiare il comportamento di Apache. Vediamone alcune:

  • Timeout – Questa direttiva specifica il tempo massimo a disposizione del server per soddisfare una richiesta. Per impostazione predefinita è di 300 secondi, il che è probabilmente troppo alto se si sta sviluppando un'app con tempi di risposta più rapidi. È possibile modificare questo valore con uno inferiore se il server dispone di risorse sufficienti.
  • KeepAlive – Specifica che ogni connessione deve rimanere aperta per gestire più richieste dallo stesso client. Per impostazione predefinita, è impostato su “On”. Tuttavia, se è impostato su “Off”, ogni richiesta dovrà stabilire una nuova connessione, anche se proviene dallo stesso client. Ciò potrebbe causare un sovraccarico significativo del server.
  • MaxKeepAliveRequests – Controlla il numero massimo di richieste consentite durante una singola connessione persistente prima della chiusura. Per consentire un numero illimitato di connessioni, impostare il valore su 0. Per ottenere le massime prestazioni ed efficienza, impostare il numero al valore più alto possibile.
  • KeepAliveTimeout – Determina il numero massimo di secondi da attendere per la richiesta successiva dallo stesso client dopo l'ultima, prima che la connessione venga chiusa. Il valore predefinito è 5 secondi. Se il tempo scade, alla richiesta successiva verrà stabilita una nuova connessione per gestire la richiesta.
  • HostnameLookups – Stabilisce se abilitare o meno la risoluzione DNS. Per impostazione predefinita è disattivata. Se abilitata, ogni richiesta comporterà almeno una query al nameserver, il che influirà negativamente e in modo significativo sulle prestazioni del server.

File di host virtuale predefinito

Un'installazione pulita del server Apache viene fornita con un file host virtuale predefinito chiamato 000-default.conf. Questo è il file che serve la pagina predefinita index.html di Apache. Si trova nella directory sites-available. Il contenuto di questo file ti darà un'idea generale del formato dei file host virtuali di Apache. Inserisci il seguente comando per aprire il file:

Ecco il contenuto del file. Abbiamo rimosso i commenti per brevità:

Come puoi vedere nell'intestazione di configurazione VirtualHost *:80, per impostazione predefinita questo host virtuale è configurato per gestire le richieste sulla porta 80. Questa è la porta HTTP standard.

Apache è progettato per utilizzare la definizione di host virtuale più specifica che corrisponde a una particolare richiesta. Ciò significa che questo particolare host virtuale potrebbe non gestire necessariamente ogni richiesta al server. Piuttosto, se ci fosse un altro file di host virtuale con una definizione più specifica, questo prevarrebbe su questo file.

Ecco le descrizioni delle direttive nel file host virtuale:

  • ServerAdmin – Specifica l'e-mail di contatto da utilizzare in caso di problemi con il server. Apache di solito la mostra nella pagina di errore generata. Se imposti ServerSignature su “Email” nel file /etc/apache2/conf-enabled/security.conf file, l'indirizzo e-mail specificato qui verrà visualizzato con un link mailto
  • DocumentRoot – Questa direttiva punta alla directory contenente i file del sito web. Puoi trovare la pagina di benvenuto predefinita di Apache nella directory /var/www/html in Ubuntu 20.04.
  • ErrorLog – Questa direttiva determina la posizione del file di log degli errori.
  • CustomLog – Questa direttiva mostra la posizione del log degli accessi e il formato di visualizzazione del log.

Direttive aggiuntive per l'host virtuale

  • ServerName – Specifica il nome di dominio o l'indirizzo IP che l'host virtuale deve gestire. Se dovessimo definire più host virtuali in modo che il nostro server Apache possa servire più siti web, aggiungeremmo una direttiva ServerName e specificheremmo il dominio che ciascun host virtuale deve servire.
  • ServerAlias – Questa direttiva fa sì che un file host virtuale si applichi a più di un nome, fornendo domini alternativi per raggiungere lo stesso contenuto. Ad esempio, quando i tuoi utenti hanno accesso allo stesso contenuto se antepongono al tuo nome di dominio www. Ad esempio, potremmo aggiungere quanto segue all'host virtuale per il dominio example.com:

La direttiva di definizione della directory

Nei casi reali, è probabile che i file del tuo sito web si trovino in diverse directory. Il file host virtuale predefinito non ha la direttiva Directory perché può servire solo un file index.html. La direttiva Directory specifica come Apache gestisce le diverse directory all'interno della document root del sito web. È in questa direttiva che definisci anche le restrizioni di accesso al filesystem. Per impostazione predefinita, Apache consente l'accesso a Internet solo ai file nella directory /var/www. In questa directory, puoi creare altre directory che conterranno i file del tuo sito web. Inoltre, puoi specificare come desideri che si acceda ai file nella directory. Una definizione di esempio può essere simile a questa:

La direttiva <Directory /var/www/html> specifica la directory a cui si applicheranno queste regole. Il parametro “AllowOverride” specifica se un file “.htaccess” debba sovrascrivere le impostazioni se lo inserisci nella directory specificata. Questo è necessario quando si lavora con framework come Laravel che funzionano con .htaccess e la riscrittura degli URL.

Per saperne di più sui virtual host, puoi visitare il nostro tutorial su come configurare i virtual host di Apache su Ubuntu 20.04. Ecco un file di esempio di virtual host con tutte le direttive che abbiamo definito:

Direttive Redirect, Alias e ScriptAlias

In alcuni casi, potresti voler accedere a file o eseguibili del sito web che non si trovano direttamente sotto la directory DocumentRoot. È qui che queste tre direttive entrano in gioco.

La direttiva Redirect indica ai client di effettuare una nuova richiesta con un URL diverso. Di solito, la userai quando vuoi indirizzare i visitatori del tuo sito web a un nome di dominio o indirizzo IP diverso. Nota che Redirect viene eseguito prima di Alias e ScriptAlias. La direttiva Alias mappa un URL su un percorso di directory. La direttiva ScriptAlias mappa un URL sulle directory che conterranno script eseguibili. Affinché Alias e ScriptAlias funzionino, devi impostare i permessi della directory per l'utente www-data utilizzato dal web.

Come abilitare siti e moduli in Apache

I virtual host e i moduli devono essere abilitati prima di diventare attivi e accessibili al processo Apache. Inoltre, i virtual host vengono creati all'interno della directory sites-available come spiegato. Se hai un file di virtual host con il nome example.com.conf, puoi abilitarlo usando il seguente comando:

Il comando abilita il virtual host. Tuttavia, affinché le modifiche abbiano effetto, devi indicare ad Apache di ricaricare i file di configurazione inserendo il seguente comando:

Potresti voler disabilitare un file di virtual host chiamato example.com.conf in modo che Apache non lo usi per servire le richieste. Per fare ciò, inserisci il seguente comando per disabilitare un file:

Ancora una volta, affinché le modifiche abbiano effetto immediato, devi indicare ad Apache di ricaricare i file di configurazione inserendo il seguente comando:

Allo stesso modo, puoi abilitare e disabilitare i moduli usando la stessa sintassi. Il comando per abilitare un modulo è “a2enmod” e il comando per disabilitare un modulo è “a2dismod.” Ad esempio, esiste un modulo Apache chiamato mod_rewrite che aiuta a riscrivere gli URL a seconda delle configurazioni di .htaccess. Devi abilitare questo modulo affinché il file .htaccess funzioni. Puoi farlo inserendo il comando:

Affinché questa modifica abbia effetto, devi ricaricare le configurazioni di Apache. Puoi anche disabilitare il modulo inserendo il comando:

Dopodiché, ricarica le configurazioni di Apache2 affinché le modifiche abbiano effetto immediato.

Infine, ecco alcune altre risorse che ti aiuteranno a familiarizzare con il server web Apache:

Conclusione

In questo tutorial, abbiamo definito i file di configurazione di base di Apache su sistemi Ubuntu e Debian. Come abbiamo dimostrato, Apache è altamente modulare, il che significa che è possibile installare molti moduli per eseguire compiti diversi.

È possibile abilitare e disabilitare facilmente questi moduli e modificare altre configurazioni per ottenere risultati diversi. Ora puoi modificare i file di configurazione locali che vengono poi inclusi nel file di configurazione principale. In questo modo, non devi preoccuparti di corrompere il file di configurazione globale.

Buon computing!

author

Manpreet Singh

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.