Aggiungere dei Virtual Hosts in XAMPP

3 Giu

Out Of Date Warning

Questo post è stato pubblicato più di 2 anni fa (il 3 giugno 2012). Le idee vanno avanti velocemente, le prospettive cambiano quindi i contenuti potrebbero non essere aggiornati. Ti prego di tenere in considerazione questo, e di verificare le informazioni tecniche presenti nell'articolo prima di farne affidamento per i tuoi scopi.

Creare in locale un ambiente completo per sviluppare le nostre applicazioni web è un requisito pressochè fondamentale.
Dopo anni in cui ho sempre eseguito manualmente l’installazione di un server WAMP in locale è arrivato il momento di semplificare e velocizzare questa operazione. Meglio tardi che mai direte voi, ma sono una persona a cui piace avere il controllo assoluto quindi tendo ad automatizzare con molta difficoltà.
Programmi come XAMPP o WAMPSERVER sono veramente ottimi per eseguire questa operazione in pochi minuti e soprattutto con un’unica installazione.

Il problema

Una volta installato XAMPP, vi è un unico dominio: http://localhost/ che corrisponde alla directory C:\xampp\htdocs.
Potremmo pensare di lavorare sempre all’interno di questa directory creando delle sottocartelle corrispondenti ai vari siti ma, questo non è certamente una buona soluzione. Questo approccio difatti porterà ad avere:

  • Problemi con inclusioni server-side.
  • Problemi con percorsi relativi root.
  • L’indirizzo di un ipotetico sitoA sarà: http://localhost/sitoA/index.php al posto di un più comodo http://sitoA.
  • Siamo obbligati a lavorare esclusivamente nella directory di default (di solito C:\xampp\htdocs).

La soluzione

La soluzione a tutti questi problemi si chiama Virtual Hosts (hosts virtuali), che possiamo creare con 2 semplici passaggi.

  1. Aggiungere degli Hosts Virtuali nella configurazione di apache: questa configurazione serve per informare Apache dove sono localizzati i files di una determinata richiesta (es: http://sitoA).
  2. Aggiornare il file host di Windows: questa configurazione serve per associare uno specifico indirizzo IP ad un nome di dominio. In questo modo (specificando il 127.0.0.1) forzeremo che il nostro ipotetico sito http://sitoA si cercato sul server web locale piuttosto che su internet (dove molto probabilmente non sarebbe trovato oppure corrisponderebbe ad un altro sito).

Step by Step

Vediamo ora come eseguire queste operazioni passo dopo passo, supponendo che abbimo scelto di creare i nostro sitoA all’interno della directory c:\www\:

Aggiornare la configurazione di Apache

  1. Aprire con il notepad il seguente file: C:\xampp\apache\conf\extra\httpd-vhosts.conf
  2. Aggiungere le seguenti righe:

    Le prime cinque righe servono ad attivare i Virtual Hosts su Apache ed a specificare C:\xampp\htdocs come percorso di default per http://localhost.
    Questo ci permetterà di continuare a raggiungere le pagine di configurazione di XAMPP attraverso l’indirizzo http://localhost (quindi è molto importante).
    Le righe successive servono a creare un Host Virtuale per il nuovo sito, non sto a spiegarle in dettaglio perchè piuttosto intuitive, il risultato finale sarà che digitando sulla barra degli indirizzi http://sitoA.locl sarà caricata la pagina: C:/wwww/siteA/index.php.

    Un trucchetto per essere sicuri di non “sovrascrivere” nessun sito realmente esistente su internet, perdendo così la possibilità di poterlo visualizzare, e quello di aggiungere al nostro dominio locale un suffisso o un prefisso particolare. Assegnare un dominio .locl può essere un’alternativa più che valida.

    Naturalmente ne creeremo uno per ogni sito.

  3. Salvare e chiudere il file httpd-vhosts.conf

Aggiornare il file host di Windows

Ora non ci rimane che aggiungere una riga nuova per ogni Virtual Host creato sul file host:

  1. Editare il file .host con il notepad: C:\Windows\System32\drivers\etc\host
    Tenete presente che su Vista (o successivi) per poter modificare questo file è necessario editarlo come amministratori, quindi aprire il notepad cliccando con il desto e scegliendo “Esegui come amministratore”.
  2. Aggiungervi la seguente riga:

    l’indirizzo 127.0.0.1 si riferisce al tuo PC, quindi come spiegato in precedenza, aggiungendo questa riga non faremo altro che indicare a Windows di cercare l’indirizzo siteA.local sul PC locale anzichè sulla rete.
  3. Salvare e chiudere il file host

Testare sul browser

A questo punto non ci rimane altro che aprire il nostro browser e caricare la pagina http://siteA.local. 😉

Risorse

http://www.apachefriends.org/it/xampp.html

10 Commenti su “Aggiungere dei Virtual Hosts in XAMPP”

  1. Marco 3 luglio 2013 at 17:27 #

    Ottimo articolo, mi è stato molto d’aiuto! Thanks!

    • grimax 3 luglio 2013 at 21:41 #

      Non c’è di che 😉

  2. Roberto Valentini 22 novembre 2013 at 11:51 #

    Ho installato l’ultima versione di xampp nel mio pc (windows 8.1)
    ho provato a inizializzare i virtualhosts come da voi descritto ma apasche rifiuta di partire dando questi errori:
    11:45:44 [Apache] Attempting to start Apache app…
    11:45:45 [Apache] Status change detected: running
    11:45:46 [Apache] Status change detected: stopped
    11:45:46 [Apache] Error: Apache shutdown unexpectedly.
    11:45:46 [Apache] This may be due to a blocked port, missing dependencies,
    11:45:46 [Apache] improper privileges, a crash, or a shutdown by another method.
    11:45:46 [Apache] Press the Logs button to view error logs and check
    11:45:46 [Apache] the Windows Event Viewer for more clues
    11:45:46 [Apache] If you need more help, copy and post this
    11:45:46 [Apache] entire log window on the forums

    ho skype ma ho provveduto a cambiare le porte
    Se C:\xampp\apache\conf\extra\httpd-vhosts.conf è disattivato il sistema si avvia regolarmente e posso, senza problemi, entrare in localhost ma solo in quello in

  3. Roberto Valentini 22 novembre 2013 at 11:53 #

    dicevo che se provo a entrare in una sottodirectory che non sia htdocs/xampp, php smette di funzionare rendendo impossibile la lettura dei files .php
    Un aiutino per favore!
    Grazie

    Roberto Valentini

  4. grimax 22 novembre 2013 at 16:09 #

    Mi sembra molto strano quello che dici…
    al massimo sarebbe + logico che l’interprete non funzionasse mai,
    ma che non funga solo nei virtual hosts non mi torna.
    Comunque tieni presente che dalla versione 2.4 di Apache devi modificare le configurazioni di autenticazione dei virtual hosts in questo modo:


    #…
    Options All
    AllowOverride All
    Require all granted

    ma non mi sembra che sia questo il tuo problema.

  5. Vincenzo 9 febbraio 2015 at 20:41 #

    Ciao! Io uso xampp v.3.2.1 e Apache non parte proprio. Va in crash!
    Anche facendo le modifiche che tu hai detto ossia aggiungendo le righe:

    Options All
    AllowOverride All
    Require all granted

    fammi sapere.
    Grazie
    Vincenzo

  6. grimax 9 febbraio 2015 at 21:00 #

    Strano… prova e dare un’occhiata al log errori

  7. Vincenzo 10 febbraio 2015 at 12:12 #

    Ti riporto alcune righe:
    http://www.example.com:443:0 server certificate does NOT include an ID which matches the server name
    [Tue Feb 10 10:32:40.732883 2015] [mpm_winnt:notice] [pid 5788:tid 316] AH00354: Child: Starting 150 worker threads.
    [Tue Feb 10 11:43:32.077897 2015] [mpm_winnt:notice] [pid 3416:tid 400] AH00422: Parent: Received shutdown signal — Shutting down the server.
    [Tue Feb 10 11:43:34.077900 2015] [mpm_winnt:notice] [pid 5788:tid 316] AH00364: Child: All worker threads have exited.
    [Tue Feb 10 11:43:34.337901 2015] [mpm_winnt:notice] [pid 3416:tid 400] AH00430: Parent: Child process 5788 exited successfully.

  8. grimax 10 febbraio 2015 at 19:50 #

    mmm…. hai controllato che non ci sia già qualche altro programma che usa la porta 80?
    Non è che hai in esecuzione IIS? Che di default usa la 80 e 443.

Lascia un commento