Nella precedente lezione abbiamo visto, in estrema sintesi, cos’è un web-server e come funziona. A partire da questa lezione vedremo, in modo estremamente pratico, come installare Apache (cioè il web-server open-source che abbiamo scelto per la nostra macchina) ed, in seguito, come completare la nostra configurazione LAMP installando anche PHP e MySQL.
Installare Apache
Colleghiamoci al nostro server Ubuntu e diamo un semplice comando per installare Apache2:
sudo apt-get install apache2 apache2-doc
Solamente il primo pacchetto è necessario per il funzionamento ma può essere comodo installare anche il secondo, apache2-doc, per avere all’interno del proprio server l’intera documentazione ufficiale sempre consultabile (ci sono diverse lingue disponibili, ma non l’italiano). La stessa documentazione è disponibile anche sul sito di Apache2.
L’installazione è già terminata e possiamo subito andare a testarne la buona riuscita collegandoci da un altro PC della stessa rete, al nostro web server. Apriamo quindi il nostro browser preferito e digitiamo l’indirizzo IP o l’hostname del server. Come vedrete ci risponderà una pagina di default di Apache per avvisarci che tutto sta funzionando:
Se abbiamo installato anche il pacchetto apache2-doc allora avremo anche la documentazione ufficiale all’indirizzo:
http://IP_DEL_SERVER/manual/
Configurare Apache
La configurazione di Apache2 viene gestita tramite direttive scritte su file di testo. In Ubuntu questi file e cartelle di configurazione li troviamo tutti all’interno della directory /etc/apache2. Vediamo quindi nel dettaglio quali sono questi file di configurazione che determinano il funzionamento di Apache2:
- apache2.conf: è il file principale di configurazione. Al suo interno troviamo tutte le impostazioni globali ovvero quelle che saranno applicate a ciascun sito presente sul nostro server.
- ports.conf: è il file che indica su quali porte il server è in ascolto per le richieste in arrivo. Al momento dell’installazione le porte sono quelle standard: 80 per http; 443 per https. Questo file viene richiamato direttamente all’interno di apache2.conf.
- envvars: in questo file vengono definite le variabili d’ambiente in uso nei file di configurazione.
- sites-available: questa cartella racchiude i file di configurazione di tutti i Virtual Host (VH), ovvero tutti i siti presenti sul server. I VH consentono di avere più siti all’interno dello stesso web server come vedremo più avanti.
- sites-enabled: questa cartella contiene collegamenti simbolici a sites-available e rappresenta la lista dei siti effettivamente accessibili ai client.
- mods-available: questa cartella contiene i file di configurazione per i moduli del web server.
- mods-enabled: come avviene per sites-enabled anche qui sono contenuti i collegamenti simbolici a mods-available dei moduli effettivamente abilitati e avviati all’interno del server Apache.
Dopo ogni modifica ad un file di configurazione è necessario riavviare il servizio per rendere effettive le modifiche. Per farlo digiteremo sul terminale:
sudo /etc/init.d/apache2 restart
Le direttive principali di Apache2
In questa sede è impossibile analizzare in modo analitico le diverse direttive previste da Apache2 (sono davvero tantissime), ci limiteremo, pertanto, a prendere in considerazione le principali.
Toveremo tali variabili direttamente nel file apache2.conf (se devono essere considerate globali e riguardare, cioè, l’intero web server) oppure all’interno dei file di configurazione dei singoli Virtual Host (se devono riguardare singoli siti web ospitati all’interno del nostro server).
- ServerRoot: definisce la directory principale con per le configurazioni di Apache. Il valore di default è /etc/apache2.
- DocumentRoot: indica la directory contenente il sito web richiesto al server. Nella nostra distro Ubuntu il valore predefinito è /var/www.
- ServerAdmin: indica l’indirizzo e-mail dell’amministratore del server. Comparirà nei messaggi di errore che i client ricevono.
- ServerName: indica l’hostname al quale il server Apache deve rispondere.
- ServerAlias: indica nomi alternativi per raggiungere per un host.
- Listen: definisce la porta sulla quale il server è in ascolto.
- User e Group: definiscono l’utente e il gruppo proprietari del processo.
- ErrorLog: indica il percorso dove registrare i file di log degli errori.
- CustomLog: indica il percorso dove registrare il file di log degli accessi e il suo formato.
- LogLevel: definisce il livello di dettaglio dei log.
- Allow from: indica a quali indirizzi IP o hostname è consentito accedere al sito.
- Deny from: indica a quali indirizzi IP o hostname non è consentito accedere al sito.
- PidFile: il file che contiene il PID del processo padre Apache2.
- TimeOut: il tempo di inattività dopo il quale Apache2 chiude una connessione client.
- KeepAlive: indica se sono permesse o no (On/Off) connessioni persistenti, ovvero in grado di servire più di una richiesta di uno stesso client.
- MaxKeepAliveRequests: il massimo numero di richieste che in una singola connessione un client può fare al server. Impostato a 0 le richieste possono essere illimitate.
- KeepAliveTimeout: indica il numero di secondi che un client deve attendere prima di effettuare un’altra richiesta su una stessa connessione.
- Include: direttive di inclusione. Apache2 utilizza queste direttive per dichiarare i parametri di configurazione scritti su file esterni (ad esempio ports.conf).
Queste sono solo alcune direttive disponibili in Apache2, quelle usate più spesso. Come al solito però, consiglio di consultare la documentazione ufficiale per avere una panoramica più ampia.