Il modo migliore di far girare Apache su Linux è probabilmente quello di installare Apache come servizio. Vediamo come fare, considerando come esempio per i comandi e i percorsi la procedura di installazione su Ubuntu (facilmente replicabile in locale). Per installare Apache
sudo apt-get install apache2
a questo punto Apache può essere avviato o arrestato come servizio
sudo service apache2 start
sudo service apache2 stop
I primi files che potrebbero interessarci sono
Log: /var/log/apache2/error.log
(in caso di errore)
Config: /etc/apache2/apache2.conf
Config: /etc/apache2/httpd.conf
(vuoto)
Gli utenti abituati a maneggiare il file httpd.conf
si potrebbero domandare perché tale file è vuoto. La risposta è che i files httpd.conf
e ports.conf
sono usati automaticamente quando viene letto il file apache2.conf
(per mezzo della direttiva include
). E' corretto maneggiare il file httpd.conf
anziché il file apache2.conf
, perché il primo dovrebbe contenere la configurazione specifica dell'utente, mentre il secondo riguarda la configurazione generica del server. Per questo motivo è possibile specificare la configurazione sia nel file apache2.conf
che nel file httpd.conf
(oppure ports.conf
), ma suggeriamo di rispettare la convenzione e inserire le nostre configurazioni “personali” nel file httpd.conf
, senza toccare l'altro.
In caso di dubbi sulla correttezza di una configurazione è possibile eseguire il comando:
apache2ctl configtest
Un esempio di configurazione minima del file httpd.conf
potrebbe essere:
ServerName my_web_server
DocumentRoot /home/my_user_name/www
ServerRoot /etc/apache2
Listen 84
User my_user_name
Group my_group_name
<Directory /var/www/sitoweb>
order deny,allow
deny from all
allow from 192.168.1
</Directory>
A questo punto potrebbe presentarsi un problema. Andando a specificare una configurazione nel file httpd.conf
, potremmo trovarci costretti ad usare una porta diversa dalla 80, come nell'esempio qui sopra, dove abbiamo usato la porta 84. Questo succede nel caso che Apache venga fornito con una configurazione predefinita di un singolo host virtuale, come avviene nel caso di Ubuntu (vedi questo articolo).
L'host virtuale di default è quello raggiungibile quando digitiamo http://localhost nel browser, ed è configurato qui
/etc/apache2/sites-available/default
all'interno di questo file troviamo la configurazione del virtual host di default, tra cui
<VirtualHost *:80>
DocumentRoot /var/www
Ecco cosa succede: se tentiamo di configurare il nostro file http.conf
usando la porta 80, generiamo un conflitto che verrà segnalato da un errore del tipo:
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
Abbiamo a disposizione almeno tre soluzioni:
- Indicare una porta diversa dalla 80 nel nostro file
httpd.conf
, come sopra. Questo vorrà però dire che dovremmo ricordarci di specificare la porta scelta nel browser - Sbirciare il valore della variabile
DocumentRoot
nel file/etc/apache2/sites-available/default
e deployare il nostro sito esattamente in quella directory. Nel nostro caso significherebbe deployare all'interno delle cartella/var/www
- Disabilitare il sito di default e rimpiazzarlo con il nostro. Per fare ciò arrestiamo Apache ed eseguiamo i comandi
cd /etc/apache2/sites-available/
sudo cp default my_new_site
Editiamo poi il file my_new_site
e sostituiamo tutti i riferimenti a /var/www
con il percorso della nostra directory, ad esempio /home/my_user_name/my_htdocs
. A questo punto disabilitiamo il vecchio sito usando a2dissite
(apache2disable site) e abilitiamo il nuovo con a2ensite
(apache2enaable site).
sudo a2dissite default
sudo a2ensite my_new_site
Fatto questo possiamo far ripartire Apache e dovremmo trovare il nostro sito (o quello che abbiamo messo dentro my_htdocs
) quando digitiamo http://localhost nel browser.
Conclusioni
Gli utenti che sono abituati ad usare il file httpd.conf
potrebbero trovare più conveniente cambiare modalità di lavoro e utilizzare la terza opzione, cioè disabilitare il sito di default e abilitarne uno nuovo. Ciò permette di trasportare tutta l'esperienza del “vecchio” httpd.conf
all'interno del nuovo (file che sopra abbiamo chiamato my_new_site
). Infatti, a parte il nome, la sintassi di questo file è la stessa del “vecchio” httpd.conf
, per cui nulla va perduto … ma tutto si trasforma!