Creare un host virtuale con Apache su Linux

18 agosto 2009

Ho trovato questa guida su http://www.comefarea.it/linuxandco/lamp/, l’ho provata e funziona

LAMP

L’acronimo LAMP significa Linux Apache MySQL PHP. Ultimamente, con l’aumento di popolarità di Python, l’ultima P assume anche il significato di Python.
Inizieremo con l’installazione e configurazione del server web Apache, per poi passare a MySQL e PHP. Infine, andremo a testare il nostro ambiente di sviluppo con una famosa applicazione web per la gestione di MySQL: phpMyAdmin. Il sistema utilizzato per scrivere l’articolo è Ubuntu Linux 8.04.1 LTS.
Installazione e configurazione di Apache

Su Ubuntu l’installazione di Apache è semplice come quella di qualsiasi altro software, con la differenza che dobbiamo usare la linea di comando, dato che Apache non compare nella lista delle normali applicazioni di Ubuntu Desktop. Per installare il server web, lanciate il comando:

$ sudo apt-get install apache2

Dato che Apache 2 è un software molto articolato, sicuramente il sistema di gestione pacchetti vi chiederà di installare ulteriore software a completamento.
Per verificare che l’installazione sia andata a buon fine, aprite il vostro browser web e digitate l’indirizzo http://127.0.0.1. Dovreste trovarvi davanti una pagina così:

Apache avviato e funzionante

Apache avviato e funzionante

Purtroppo la configurazione predefinita di Apache va bene solo per visualizzare questa pagina. Per avere un ambiente su misura, bisogna mettere mano ai file di configurazione.

NOTA
Prima di procedere con i passi successivi, si consiglia di leggere l’articolo che parla della console dei comandi.

Portatevi nella cartella /etc/apache, la quale contiene tutti i file di configurazione di Apache. Normalmente il file di configurazione principale è httpd.conf. Su Ubuntu, invece, il sistema di configurazione è un po’ diverso dal solito: il file principale è apache.conf, in più ci sono molti file accessori che vengono inclusi in quello principale tramite una apposita direttiva. In questo modo, ogni volta che si vuole aggiungere o togliere qualcosa nel file di configurazione, non si va a modificare direttamente apache.conf, ma si aggiungono o tolgono i file accessori. È un modo molto efficace di gestire la configurazione, dato che questa frammentazione rende più facile trovare eventuali errori di sintassi.

Portatevi nella sotto-cartella sites-available, che contiene tutti i virtual hosts disponibili nella vostra configurazione di Apache. L’unico file presente è default, contenente la configurazione predefinita del virtual host principale di Apache. Copiate questo file per creare un nuovo virtual host. Nel nostro caso lo abbiamo copiato col nome vh_prova.

NOTA
ovviamente, dato che siamo all’interno della cartella /etc, per poter fare modifiche alla struttura del filesystem e ai file stessi, dobbiamo avere i diritti di amministrazione.

Aprendo il file appena creato, vi trovate davanti al file di configurazione per il vostro nuovo host virtuale:

<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/


<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>



<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>



ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/


<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>



ErrorLog /var/log/apache2/error.log


# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On


Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

Ai fini del nostro articolo, sfoltiremo questo file per renderlo più semplice e maneggevole, senza le complicazioni tipiche di una configurazione da server. In fondo il nostro obiettivo è avere una workstation funzionante, non un server perfettamente configurato.
Il nostro nuovo file, debitamente sfoltito, risulterà essere:

NameVirtualHost *
<VirtualHost *>
ServerAdmin vostra_email@prova.it
ServerName vh_prova.backintime


DocumentRoot /home/paolo/public/vh_prova
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Le due righe più importanti di questo file sono:

ServerName vh_prova.backintime
DocumentRoot /home/paolo/public/vh_prova

La prima è auto-documentante: indica il nome, o indirizzo, del nostro host virtuale. Dalla nostra configurazione di esempio, si evince che il nostro host risponderà all’indirizzo http://vh_prova.backintime.
Come scegliere l’indirizzo? Di solito consiglio di usare nome_virtual_host.nome_computer; nel nostro caso, come si intuisce, il nome del computer è backintime.
La seconda riga, invece, indica la nostra document root, cioè la cartella radice del nostro host virtuale, quella che conterrà tutti i file della futura applicazione web che svilupperemo. Nel nostro caso, ho deciso che i files risiederanno nella sottocartella vh_prova della mia cartella public. Qualsiasi cartella va bene come document root, a patto che possa essere accessibile dal server web Apache.

Il significato delle altre opzioni di configurazione esula dallo scopo dell’articolo, quindi rimando alla documentazione ufficiale di Apache.

Dopo aver sistemato la configurazione del nostro host virtuale, dovete creare un link simbolico nella cartella sites-enabled:

$ sudo ln -s /etc/apache2/sites-available/vh_prova /etc/apache2/sites-enabled/

Creando questo link simbolico, avete reso attivo il vostro nuovo host: infatti questa cartella contiene i link simbolici alle configurazioni degli host virtuali che devono essere attivati sulla vostra installazione di Apache.

Adesso dovete rendere accessibile l’indirizzo del nostro virtual host: infatti digitando l’indirizzo http://vh_prova.backintime, il vostro computer andrà a cercare la risoluzione del nome nel vostro server DNS, che nella maggior parte dei casi risponderà con un errore. Per effettuare un by-pass del DNS, dovete modificare il file /etc/hosts, che contiene le informazioni sugli host conosciuti. Aggiungete la riga:

127.0.0.1 vh_prova.backintime

e salvate il file. Ovviamente, se avete scelto un nome diverso da vh_prova.backintime, mettete la vostra scelta.

La configurazione del virtual host è finita. Adesso non resta che scrivere una pagina index.html di prova per testarne il funzionamento. Per i più pigri, ecco un semplice documento HTML per un veloce copia-incolla:

<html>
<head>
<title>Home page di prova</title>
</head>
<body>
<h1>Home page di prova</h1>
<p>Questa &egrave; la prima home page di prova</p>
</body>
</html>

Salvatelo nella document root che avete indicato in precedenza. L’ultima operazione da fare è riavviare Apache per rendere attive le modifiche:

$ sudo /etc/init.d/apache2 restart

Se il riavvio va a buon fine, dovreste trovarvi davanti a una schermata così:

Il virtual host che funziona

Il virtual host che funziona

Nel caso in cui il riavvio di Apache non abbia successo, controllate la sintassi del vostro file di configurazione: nella maggior parte dei casi il problema è quello.