Nelle scorse puntate abbiamo visto come installare il web server Apache su diversi sistemi operativi. Nel caso di Windows possiamo scegliere tra pacchetti di tipo AMP (come XAMPP o easyPHP), mentre su Linux la scelta di solito è tra installare Apache come servizio oppure come applicazione (anche qui usando XAMPP).

Finché lavoriamo in locale dovremmo avere accesso a tutti i files di configurazione del caso, e siamo in grado di configurare il server per soddisfare le esigenze delle pagine o applicazioni servite da Apache. Le cose cambiamo se dobbiamo portare live, ad esempio su un sistema in hosting remoto, le pagine che abbiamo sviluppato (e testato) in locale. In tal caso è abbastanza probabile che le pagine deployate in remoto non funzionino come dovrebbero, e nella maggior parte dei casi ciò è dovuto ad un problema di configurazione di Apache.

Con questo articolo vogliamo fare una panoramica dei files di configurazione più importanti, senza scendere nei dettagli della sintassi necessaria per specificare le direttive di Apache. Lo scopo è quello di aiutare i meno esperti a capire quali sono i files da considerare quando dobbiamo mettere mano alla configurazione di Apache. Una delle caratteristiche di molti web server è quella di offrire un set di configurazione ridondante: una stessa configurazione può essere inserita in files diversi, ottenendo il medesimo risultato. Perché questa libertà? Il motivo è che alcuni files sono solitamente accessibili solo agli amministratori, e qui vengono specificate le direttive generali del server. Altri files sono invece accessibili ai singoli utenti, permettendo di regolare in modo fine la configurazione della specifica applicazione (ed ereditando la configurazione generale decisa dagli amministratori).

Ciò significa che raramente esiste il file giusto dove mettere le mani: una stessa problematica può essere risolta editando un file anziché un altro. Tutto dipende dai privilegi che abbiamo sulla macchina in hosting, dalla politica dell'hosting provider e dallo scope delle modifiche. Ecco perché è bene conoscere i diversi modi di ottenere una stessa configurazione: tutti i files che andremo a vedere sono potenzialmente utili al nostro scopo.

Apache2.conf

E' il file principale di configurazione di Apache. Questo files non è solitamente accessibile agli utenti di un sistema in hosting, ma viene gestito dagli amministratori. Anzi: di solito questo file viene editato solamente in fase di installazione, e solamente se Apache va installato con qualche esigenza specifica. Durante il normale uso di Apache, eventuali modifiche richieste da qualche web application andrebbero inserite altrove.

Il file apache2.conf di solito include automaticamente i files httpd.conf e ports.conf, per cui qualsiasi direttiva inserita in questi ultimi due files è aggiunta (a run-time) al file apache2.conf. Ecco perché nella prassi quotidiana non dovrebbe essere necessario mettere mano al file apache2.conf.

Questo file potrebbe non essere presente se installiamo Apache usando un pacchetto AMP. Se invece Apache è installato come servizio su Linux, il file dovrebbe trovarsi in /etc/apache2/.

In caso di modifica a questo file, di solito è necessario riavviare il server.

httpd.conf

Come detto sopra, il file httpd.conf è spesso il miglior candidato dove specificare la configurazione che ci interessa, rispettando le stesse regole e sintassi del file apache2.conf. Alcuni scenari d'uso potrebbero essere:

  • Cambiare la porta http: modificare le direttive Listen e ServerName, ed eventualmente le porte associate ai VirtualHost (se usati)
  • DocumentRoot: se vogliamo deployare le pagine web in un percorso diverso da www o htdocs,qui possiamo specificare la root dei nostri documenti
  • Directory: permette di allargare o stringere i permessi d'accesso alle directories del file system. E' spesso il primo posto dove mettere le mani se lavoriamo in locale, per dare il permesso ad Apache di servire le pagine presenti sulla nostra macchina

A titolo d'esempio, il file potrebbe trovarsi in percorsi come questi:

/etc/apache2/

C:\<baseDir>\xampp\apache\conf\httpd.conf

C:\Program Files (x86)\EasyPHP-<versione>\conf_files\httpd.conf

Nel caso di EasyPHP, ricordiamoci di non toccare il file collocato all'interno della cartella conf: si tratta di una copia modificata ad hoc del file originale (quello in conf_files), ad uso e consumo di EasyPHP. Il file che ci interessa è quello visto sopra, nella directory conf_files.

sites-enabled

Se lavoriamo su Linux, all'interno della directory sites-enabled possiamo trovare i files di configurazione dei vari virtual host: questi files esigono la stessa sintassi di quelli visti sopra, e di solito hanno nome uguale a quello del sito o applicazione associato al virtual host.

.htaccess

E' il file che permette di aggiungere facilmente configurazioni specifiche per il singolo sito o web application. Su un server Apache possono esistere diversi files .htaccess, anche all'interno dello stesso albero di directories. I files .htaccess di alto livello, presenti nella root del server o nella root di un sito, indicheranno le direttive principali del server o del sito. Eventuali files .htaccess collocati all'interno di una particolare directory, avranno effetto solo su quella cartella (e ricorsivamente sulle sotto cartelle). Ricordiamoci che i files .htaccess sono usati solamente se lo permette la configurazione di alto livello (quella specificata dai files visti sopra). A seconda di come l'amministratore decide di configurare la direttiva AllowOverride, i files .htaccess potrebbero essere ignorati o utilizzati solo in particolari condizioni. Per approfondimenti, rimandiamo alla guida di Apache.