Home > open source | php > Xampp: gestire siti multipli in locale tramite i VirtualHost

Xampp: gestire siti multipli in locale tramite i VirtualHost

21 giugno 2010 3 Comments »

Xampp permette di installare con un click un ambiente di sviluppo completo per php contenente il webserver Apache, MySQL e phpMyAdmin, Filezilla FTP server e Mercury mail.

Solitamente gli sviluppatori hanno la necessità di seguire più progetti contemporaneamente: tramite i VirtualHost è possibile mantenerli fisicamente separati invece di metterli tutti nella cartella di default htdocs.

La procedura descritta è per ambiente Windows supponendo di aver seguito l’installazione standard di Xampp, per altri sistemi operativi si dovranno adattare i percorsi delle cartelle.

1) Aprire con un editor testuale il file C:\xampp\apache\conf\httpd.conf e se non è già presente inserire alla fine del file la seguente riga:


Include "conf/extra/httpd-vhosts.conf"

2) Aprire il file C:\xampp\apache\conf\extra\httpd-vhosts.conf

In questo file verranno segnalati al webserver Apache tutti gli host virtuali che desideriamo creare. Nell’esempio seguente indichiamo di mantenere la cartella localhost e in più creiamo 2 siti fittizi: test1.local e test2.local (è possibile inserire qualsiasi nome: demo, demo_site…)

NameVirtualHost *:80

#localhost
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs"
    ServerName localhost
</VirtualHost>

#test1.local
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/vhosts/test1.local"
    ServerName test1.local
    <Directory "C:/xampp/htdocs/vhosts/test1.local">
		Options Indexes FollowSymLinks Includes ExecCGI
		AllowOverride All
		Order allow,deny
		Allow from all
  	</Directory>
</VirtualHost>

#test2.local
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/vhosts/test2.local"
    ServerName test2.local
    <Directory "C:/xampp/htdocs/vhosts/test2.local">
		Options Indexes FollowSymLinks Includes ExecCGI
		AllowOverride All
		Order allow,deny
		Allow from all
  	</Directory>
</VirtualHost>

Il nome della DocumentRoot e del ServerName possono anche essere diversi.

3) Adesso bisogna creare le directory che conterranno i siti. In htdocs creiamo una nuova cartella vhosts e al suo interno le 2 cartelle per i siti: test1.local e test2.local.

4) Ora bisogna fare in modo che il browser richiami il sito corretto quando ad esempio si scrive l’url http://test1.local.
Per fare questo si deve modificare il file HOSTS di Windows.

Aprire il file C:\Windows\System32\drivers\etc\HOSTS con un editor (il blocco note va benissimo) e inserire le seguenti righe alla fine del file:


127.0.0.1 test1.local
127.0.0.1 test2.local

Per la gestione degli host in Windows è possibile utilizzare un comodo programma freeware: HostMan.

5) Come ultimo step si deve riavviare il webserver Apache tramite il pannello di controllo.

Per ogni nuovo sito si dovrà quindi:

  • creare un nuovo VirtualHost nel file httpd-vhosts.conf
  • creare una nuova cartella per contenere il sito
  • creare una nuova associazione ip-nome host nel file HOSTS di Windows
  • riavviare il webserver

Tags: php

Comments:3

  1. simone Rispondi
    22 maggio 2011 at 09:13

    Ciao l’articolo è molto interessante, però volevo sapere se c’era il modo per rendere il tutto dinamico ovvero: ogni volta che creo una cartella (quindi un nuovo sito) vorrei che fosse subito accessibile, senza andare a fare quella procedura ogni volta. Ho provato HostsMan ma non mi sembra che si possa fare questo. Comunque so di certo che si può fare perchè dove lavoro c’è questo meccanismo ma chi l’ha fatto se ne è andato. Spero tu possa aiutarmi grazie mille!

  2. simone Rispondi
    5 giugno 2011 at 14:09

    Ciao ti ringrazio molto per la risposta, me la leggo con calma ora. Ciao e ancora grazie! ;)

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>