Categorie
Apache Tools

Aggiungere dei Virtual Hosts in XAMPP

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:
    NameVirtualHost *:80
      <VirtualHost *:80>
        DocumentRoot "C:\xampp\htdocs"
        ServerName localhost
      </VirtualHost>
    
    <VirtualHost *:80>
        DocumentRoot "C:\wwww\siteA"
        ServerName siteA.locl
    	<Directory "C:\wwww\siteA">
    		DirectoryIndex index.php
    		AllowOverride All
    		Order allow,deny
    		Allow from all
    	</Directory>
    </VirtualHost>
    

    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:
    127.0.0.1	siteA.locl
    

    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

17 risposte su “Aggiungere dei Virtual Hosts in XAMPP”

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

voila!
Sono riuscito a far partire un host virtuale!
Il sistema, però, funziona solo se utilizzo files .htm se tento di avviare una pagina in .php il server non interpreta php come se non funzionasse
dove sbaglio?
Grazie

Valentini Roberto

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.

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

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.

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.

Salve a tutti, ho bisogno del vostro aiuto.
Sto creando delle pagine dinamiche con php e devo appoggiarmi su un database mysql per i dati. Per questo ho installato xampp (7.0.4).
Tutto bene, a parte apache che non partiva causa l’utilizzo della porta 80 da parte del sitema.
(E’ stato sufficiente modificare il file httpd.conf impostando l’istruzione da Listen 80 a
Listen 8080 , che è la porta sulla quale gira apache, e tutto funziona bene)
Quello che assolutamente non riesco a far funzionare, è l’aggiunta di virtal host a XAMPP ( o meglio, le aggiunte le ho fatte e penso anche in modo corretto, anche sul file hosts) ma assolutamente se li richiamo dal mio browser, NON FUNZIONA. Mi dice : Accesso negato! Error 403 …)

Di seguito le modifiche fatte ai due file :
httpd-vhosts.conf :


DocumentRoot “C:/xampp/apps/wordpress/htdocs”
ServerName wordpress.localhost

DocumentRoot “C:/www/lrfc”
ServerName lrfc.locl

DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all

Al file hosts :



127.0.0.1 localhost
127.0.0.1 wordpress.localhost
127.0.0.1 lrfc.locl

Dove sbaglio ??? Ad ogni modifica stoppo il servizio e riavvio il servizio di apache.
Mi date quache consiglio ???

Grazie.
Da notare che se richiamo il server virtuale wordpress funziona correttamente.

Grazie ancora per l’aiuto.

buonasera io non ho capito bene. vi faccio un esempio di quello che vorrei
inserire il mio sito su xampp (invece esempio di aruba) ogni volta che attivo xampp il mio sito si deve visualizzare in rete normalmente come altri siti.
Si puo’ fare?
vi prego di rispondermi il piu’ presto possibile
Grazie

Scrivo solo per ringraziare per la guida chiara ed esaustiva.
Mi hai risolto un problema: eseguire un’applicazione Symfony in una sottodirectory di Xampp.
Grazie!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.