Come configurare il server Web Apache su un VPS Ubuntu o Debian

Introduzione

Apache è uno dei server web più popolari su Internet. Viene utilizzato per servire più della metà di tutti i siti web attivi. Anche se ci sono molti server web validi che possono servire i tuoi contenuti, è utile capire come funziona Apache a causa della sua ubiquità.

Questo articolo esaminerà alcuni file di configurazione generale e le opzioni che possono essere controllate al loro interno. Questo articolo seguirà la struttura dei file di Apache per Ubuntu/Debian, che è diversa da come altre distribuzioni costruiscono la gerarchia di configurazione.

Prerequisiti

Se stai utilizzando Ubuntu versione 16.04 o inferiore, ti consigliamo di eseguire l’aggiornamento a una versione più recente poiché Ubuntu non fornisce più supporto per queste versioni. Questa raccolta di guide ti aiuterà nell’aggiornamento della tua versione di Ubuntu.

  • Un server in esecuzione su Ubuntu, insieme a un utente non root con privilegi sudo e un firewall attivo. Per istruzioni su come configurarli, seleziona la tua distribuzione da questa lista e segui la nostra Guida all’Installazione Iniziale del Server.

  • Prima di iniziare a esplorare le configurazioni di Apache, è necessario avere Apache installato sul tuo server. Puoi imparare come farlo seguendo il nostro tutorial “Come installare il server web Apache su Ubuntu” 22.04 / 20.04 / 18.04 o il tutorial Come installare il server web Apache su Debian 10.

5 Passaggi per Configurare il Server Web Apache su Ubuntu

  1. La Gerarchia dei File di Apache
  2. Esplorazione del File Apache2.conf
  3. Impostazione delle Configurazioni Globali di Apache
  4. Configurazione del File Host Virtuale di Apache
  5. Abilitazione di Siti e Moduli

Passaggio 1: La Gerarchia dei File di Apache

Apache mantiene i suoi file di configurazione principali all’interno della cartella /etc/apache2. Eseguendo il seguente comando verranno elencati tutti i file all’interno di questa cartella:

  1. ls -f /etc/apache2
Output
envars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available

Ci sono diversi file di testo e alcune sotto-cartelle all’interno di questa directory. Ecco alcune posizioni utili con cui familiarizzare:

  • apache2.conf: Questo è il file di configurazione principale per il server. Quasi tutte le configurazioni possono essere fatte all’interno di questo file, anche se è consigliabile utilizzare file separati e designati per semplicità. Questo file configurerà i valori predefiniti e sarà il punto centrale di accesso per il server per leggere i dettagli della configurazione.
  • ports.conf: Questo file viene utilizzato per specificare le porte su cui dovrebbero ascoltare gli host virtuali. Assicurati di controllare che questo file sia corretto se stai configurando SSL.
  • sites-available/ e sites-enabled/: La directory sites-available contiene configurazioni dei file degli host virtuali. Le configurazioni all’interno di questa cartella stabiliranno quale contenuto verrà servito per quali richieste. Ciò è abilitato tramite il collegamento alla directory sites-enabled, che memorizza i file di configurazione degli host virtuali attivati. Quando Apache si avvia o si ricarica, legge i file di configurazione e i collegamenti all’interno della directory sites-enabled mentre compila una configurazione completa.
  • conf-available/ e conf-enabled/: Queste directory contengono frammenti di configurazione non collegati ai file di configurazione degli host virtuali.
  • mods-enabled/ e mods-available/: Queste directory definiscono i moduli che possono essere opzionalmente caricati. Le directory contengono due componenti: file con estensione .load, che contengono frammenti che caricano moduli specifici, e file con estensione .conf, che memorizzano le configurazioni di questi moduli.

La configurazione di Apache non avviene in un singolo file monolitico, ma avviene invece attraverso un design modulare in cui nuovi file possono essere aggiunti e modificati secondo necessità.

Passaggio 2: Esplorazione del File Apache2.conf

I dettagli principali della configurazione del tuo server Apache sono contenuti nel file /etc/apache2/apache2.conf.
Questo file è diviso in tre sezioni principali:

  • Configurazione per il processo globale del server Apache
  • Configurazione del server predefinito
  • Configurazione degli host virtuali.

Apri questo file con il tuo editor di testo preferito. L’esempio seguente utilizza nano:

  1. sudo nano /etc/apache2/apache2.conf

In Ubuntu e Debian, questo file viene utilizzato per configurare le definizioni globali. La configurazione del server predefinito e degli host virtuali è gestita utilizzando la direttiva Include.
La direttiva Include consente ad Apache di leggere altri file di configurazione nel file corrente nella posizione in cui compare l’istruzione. Il risultato è che Apache genera dinamicamente un file di configurazione generale all’avvio.

All’interno di questo file sono presenti diverse istruzioni Include e IncludeOptional. Queste direttive caricano le definizioni dei moduli, il documento ports.conf, i file di configurazione specifici nella directory conf-enabled/, e le definizioni degli host virtuali nella directory sites-enabled/:

/etc/apache2/apache2.conf
…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf

Passaggio 3: Configurare le Configurazioni Globali di Apache

Vi sono alcune opzioni che potresti voler modificare nelle Configurazioni Globali:

Timeout

Per impostazione predefinita, questo parametro è impostato su 300. Ciò significa che il server ha un massimo di 300 secondi per soddisfare ciascuna richiesta.
Questo parametro può essere ridotto in modo sicuro a qualcosa compreso tra 30 e 60 secondi.

KeepAlive

Questa opzione, se impostata su On, permetterà a ciascuna connessione di rimanere aperta per gestire più richieste dallo stesso client.
Se impostata su Off, ogni richiesta dovrà stabilire una nuova connessione, il che può comportare un significativo overhead a seconda della tua configurazione e situazione del traffico.

MaxKeepAliveRequests

Questo controlla quante richieste separate gestirà ogni connessione prima di terminare. Mantenere questo numero alto permetterà ad Apache di servire contenuti a ciascun client in modo più efficace.
L’impostazione predefinita è impostata su 100. Impostando questo valore su 0 permetterà ad Apache di servire un numero illimitato di richieste per ogni connessione.

KeepAliveTimeout

Questa impostazione specifica per quanto tempo aspettare la prossima richiesta dopo aver completato l’ultima. Se viene raggiunto il limite di timeout, allora la connessione morirà.
Questo significa che la prossima volta che viene richiesto un contenuto, il server stabilirà una nuova connessione per gestire la richiesta del contenuto che compone la pagina che il client sta visitando. Il default è impostato su 5.

Dopo aver esaminato il contenuto di questo file di configurazione, puoi chiuderlo premendo CTRL+X.

Moduli di elaborazione multipla

A Multi-Processing Module (MPM) extends Apache’s modular design. MPMs are responsible for listening, directing, and handling different network requests. You can cross-reference which section your Apache installation was compiled in with using the following command:

  1. apache2 -L
Output
Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.c

Puoi verificare il tipo di MPM sul tuo server con il comando a2query -M:

  1. a2query -M
Output
event

L’output rivela che il MPM event è utilizzato su questo server. La tua installazione potrebbe averne più di uno tra cui scegliere, ma ne può essere selezionato solo uno.

Passaggio 4: Aggiornare il file del virtual host di Apache

La dichiarazione predefinita del virtual host può essere trovata in un file chiamato 000-default.conf all’interno della directory sites-available/. Puoi apprendere il formato generale di un file di virtual host esaminando questo file.

Apri il file con il seguente comando:

  1. sudo nano /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…

Il virtual host predefinito è configurato per gestire qualsiasi richiesta sulla porta 80, la porta HTTP standard. Questo è definito nell’intestazione della dichiarazione dove dice *:80, che significa porta 80 su qualsiasi interfaccia.
Tuttavia, ciò non significa necessariamente che gestirà ogni richiesta al server su questa porta. Apache utilizza la definizione di virtual host più specifica che corrisponde alla richiesta. Se esistesse una definizione più specifica, potrebbe sostituire questa definizione. Dopo aver esaminato il file, puoi chiuderlo premendo CTRL+X.

Configurazione del Virtual Host di Apache

Le seguenti opzioni sono impostate all’interno della definizione del virtual host al di fuori di qualsiasi altra sotto-dichiarazione di livello inferiore. Si applicano all’intero virtual host.
Per iniziare, apri il file security.conf all’interno della directory conf-available/:

  1. sudo nano /etc/apache2/conf-available/security.conf

Questo file contiene la direttiva Server Signature, che ti consente di specificare un’email di contatto da utilizzare in caso di problemi del server. Puoi cambiare l’opzione predefinita da On a EMail per rivelare l’indirizzo email dell’amministratore del server. Assicurati di essere disposto a ricevere la posta se modifichi questa impostazione:

/etc/apache2/conf-available/security.conf
…
ServerSignature EMail

Esci dal file premendo CTRL+X. Dopo aver modificato un file di configurazione, ti verrà chiesto di confermare le modifiche. Premi Y per salvare le modifiche al tuo file o premi N per scartarle.

All’interno del tuo file del virtual host, puoi aggiungere una direttiva ServerName che specifica il nome di dominio o l’indirizzo IP che questa richiesta dovrebbe gestire. Questa è l’opzione che aggiungerebbe specificità al virtual host, consentendogli di sovrascrivere la definizione predefinita se corrisponde al valore di ServerName.

Esegui il seguente comando per aprire il tuo file del virtual host, assicurandoti di sostituire la variabile your_domain con il tuo effettivo nome di dominio:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Aggiungi il_tuo_dominio alla direttiva ServerName:

/etc/apache2/sites-available/your_domain.conf
…
ServerName your_domain

Allo stesso modo, puoi anche fare in modo che il virtual host si applichi a più di un nome utilizzando la direttiva ServerAlias. Questo fornisce percorsi alternativi per raggiungere lo stesso contenuto. Un buon caso d’uso per questo è aggiungere lo stesso dominio, preceduto da www:

/etc/apache2/sites-available/your_domain.conf
…
ServerAlias www.your_domain.com

La direttiva DocumentRoot specifica dove sarà situato il contenuto richiesto per questo virtual host. Su Ubuntu, il virtual host predefinito è configurato per servire il contenuto dalla directory /var/www/:

/etc/apache2/sites-available/your_domain.conf
…
DocumentRoot /var/www/your_domain/public_html

Definizioni della Directory

All’interno della definizione del virtual host, ci sono definizioni su come il server gestisce diverse directory all’interno del filesystem. Apache applicherà tutte queste direttive in ordine da più breve a più lungo, quindi c’è di nuovo la possibilità di sovrascrivere le opzioni precedenti.

Apri il file apache2.conf con questo comando:

  1. sudo nano /etc/apache2/apache2.conf
/etc/apache2/apache2.conf
…
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
…

La prima definizione di directory applica regole per la directory /, o radice. Questo fornirà la configurazione di base per il tuo virtual host, in quanto si applica a tutti i file serviti sul filesystem. Nota le opzioni di configurazione della directory, insieme ad alcuni utili commenti, contenuti in questo file. Questa configurazione predefinita nega l’accesso a tutti i contenuti a meno che non venga specificato diversamente nelle definizioni di directory successive.

La direttiva Require può limitare o aprire l’accesso a risorse diverse all’interno del tuo server.
La direttiva AllowOverride viene utilizzata per decidere se un file .htaccess può sovrascrivere le impostazioni se è posizionato nella directory dei contenuti. Questo non è consentito per impostazione predefinita, ma può essere utile abilitarlo in varie circostanze.
Dopo aver esaminato il contenuto di questo file, puoi chiuderlo premendo CTRL+X.

Dichiarazioni Alias e ScriptAlias

Le definizioni di directory sono talvolta precedute dalle direttive Alias o ScriptAlias.
Apri il file di configurazione del tuo host virtuale con questo comando e sostituisci la variabile your_domain con il nome del tuo dominio:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

La direttiva Alias mappa un percorso URL a un percorso della directory. Ad esempio, in un host virtuale che gestisce le richieste a your_domain il seguente consentirebbe l’accesso ai contenuti all’interno di /usr/local/apache/content/ quando si naviga su your_domain.com/content/:

/etc/apache2/sites-available/your_domain.conf
Alias “/content/” “/usr/local/apache/content/”

La direttiva ScriptAlias opera allo stesso modo, ma viene utilizzata per definire directory che conterranno componenti eseguibili al loro interno:

/etc/apache2/sites-available/your_domain.conf
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

Ricorda di definire la directory con i privilegi di accesso come discusso nella sezione precedente. Dopo aver completato le modifiche al file, esci dal file premendo CTRL+X. Se hai apportato modifiche a questo file, premi Y per salvare le modifiche al file o premi N per lasciare il file com’era prima di apportare modifiche alla configurazione.

Passaggio 5: Abilitazione Siti e Moduli

Una volta ottenuto un file di host virtuale che soddisfa i tuoi requisiti, puoi utilizzare gli strumenti inclusi in Apache per trasformarlo in siti web attivi.
Per creare un collegamento simbolico nella directory sites-enabled a un file esistente nella directory sites-available, emetti il seguente comando. Assicurati di sostituire your_domain con il nome del tuo file di configurazione del sito host virtuale:

  1. sudo a2ensite your_domain

Dopo aver abilitato un sito, emetti il seguente comando per dire ad Apache di ricaricare i suoi file di configurazione, consentendo alla modifica di propagarsi:

  1. sudo systemctl restart apache2

C’è anche un comando complementare per disabilitare un host virtuale. Opera rimuovendo il collegamento simbolico dalla directory sites-enabled. Ad esempio, con il tuo sito host virtuale abilitato, puoi disabilitare il sito predefinito 000-default:

  1. sudo a2dissite 000-default

I moduli possono essere abilitati o disabilitati utilizzando i comandi a2enmod e a2dismod rispettivamente. Essi funzionano allo stesso modo delle versioni a2ensite e a2dissite di questi comandi. Ad esempio, per abilitare il modulo info, è possibile utilizzare il seguente comando:

  1. sudo a2enmod info

Allo stesso modo, è possibile disabilitare un modulo utilizzando il comando a2dismod:

  1. sudo a2dismod info

Ricordati di riavviare Apache dopo aver modificato i file di configurazione e abilitato o disabilitato i moduli.

Conclusione

Apache è versatile e molto modulare, quindi le esigenze di configurazione saranno diverse a seconda della tua configurazione.
Dopo aver esaminato alcuni casi d’uso generale sopra, dovresti avere una buona comprensione di quali sono i principali file di configurazione utilizzati e come interagiscono tra di loro. Se hai bisogno di conoscere opzioni di configurazione specifiche, i file forniti sono ben commentati e Apache fornisce un’ottima documentazione. Speriamo che i file di configurazione non siano più intimidatori ora e ti sentirai più a tuo agio nell’esperimentare e modificare per soddisfare le tue esigenze.

Source:
https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debian-vps