Come creare un host virtuale in WampServer
WAMPServer 3 ha reso questo processo molto più semplice!
Puoi fare quasi tutto da un'utilità fornita come parte di WAMPServer.
Crea una cartella all'interno per contenere il tuo project.site. Questo può essere nella C:\wamp\www\
directory o in una cartella completamente separata come C:\websites
.
Crea una cartella all'interno della posizione che hai scelto EG C:\websites\project1\www
o sotto il filec:\wamp\www\project1\www
Ora apri localhost wampmanager->localhost
e fai clic sul collegamento Add a Virtual Host
nella sezione STRUMENTI sulla home page.
Vedrai una pagina come questa:
Compila i campi come specificato dalle istruzioni sopra ogni campo
La configurazione dell'host virtuale sarà stata creata per te.
Ora devi riavviare la cache DNS. Puoi farlo dai menu di wampmanager come questo right click wampmanager->Tools->Restart DNS
. La cache DNS verrà riavviata e quindi anche Apache verrà arrestato e riavviato. Quando l'icona di wampmanager diventa di nuovo verde, tutto è completato.
Ora devi creare un semplice index.php
file o installare il tuo sito nella cartella che hai creato sopra.
Supponendo che il tuo VH sia stato chiamato, project.dev
dovresti vedere quel nome nella sezione I tuoi host virtuali della home page di WAMPServer.
È possibile avviare il sito da questo menu o semplicemente utilizzare il nuovo nome di dominio nella barra degli indirizzi EG project1.dev
e il sito dovrebbe essere avviato.
Vecchio meccanismo WAMPServer 2.5, o se vuoi farlo tutto manualmente
C'è stato un cambiamento di concetto in WampServer 2.5 e versioni successive e c'è una buona ragione per questo cambiamento!
In WampServer è ora FORTEMENTE incoraggiato a creare un host virtuale per ciascuno dei tuoi progetti, anche se li tieni in una \wamp\www\subfolder
struttura.
Documentazione sugli host virtuali
Esempi di host virtuali
La home page di WampServer ( \wamp\www\index.php
) ora si aspetta che tu abbia creato un host virtuale per tutti i tuoi progetti e quindi funzionerà correttamente solo se lo fai.
Storia
Per rendere la vita più facile ai principianti che utilizzano WampServer per imparare PHP Apache e MySQL, è stato suggerito di creare sottocartelle sotto la \wamp\www\
cartella.
wamp
|
|
|
|
Queste sottocartelle verrebbero quindi visualizzate come collegamenti nella home page di WampServer in un menu chiamato "I tuoi progetti" e questi collegamenti conterrebbero un collegamento a localhost/subfoldername
.
Accettabile solo per semplici tutorial
Ciò ha reso la vita facile per il principiante assoluto ed era perfettamente accettabile, ad esempio, per coloro che seguivano i tutorial per imparare la codifica PHP. Tuttavia, non è mai stato concepito per essere utilizzato durante lo sviluppo di un vero sito Web che successivamente si desidera copiare sul server live ospitato. In effetti, se si utilizzava questo meccanismo, spesso si creavano problemi poiché la configurazione dei siti live non corrispondeva alla configurazione di sviluppo.
Il problema per lo sviluppo di un sito web reale.
La ragione di ciò è ovviamente che l'impostazione predefinita di DocumentRoot per wamp è
DocumentRoot "c:/wamp/www/"
indipendentemente da come è stata chiamata la tua sottocartella. Questo fatto che spesso utilizzava il codice PHP che interrogava la struttura o il tuo sito ha ricevuto informazioni diverse durante l'esecuzione sul tuo WampServer di sviluppo rispetto a quello che riceverebbe durante l'esecuzione su un server ospitato dal vivo, dove la configurazione di DocumentRoot punta alla cartella nella parte superiore del sito web gerarchia dei file. Questo tipo di codice esiste in molti framework e CMS, ad esempio WordPress e Joomla, ecc.
Per esempio
Diciamo che abbiamo un progetto chiamato project1 trattenuto wamp\www\project1
ed eseguito in modo errato comelocalhost/project1/index.php
Questo è quanto verrebbe riportato da alcuni dei comandi PHP in questione:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Ora, se avessimo definito correttamente quel sito utilizzando una definizione di host virtuale e http://project1
lo avessimo eseguito poiché i risultati sul sito di sviluppo di WAMPServer corrisponderanno a quelli ricevuti su un ambiente ospitato dal vivo.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
All'inizio questa differenza può sembrare banale, ma se dovessi utilizzare un framework come WordPress o uno dei CMS come Joomla, ad esempio, questo può causare problemi quando sposti il tuo sito su un server live.
Come creare un host virtuale in WampServer
In realtà questo dovrebbe funzionare fondamentalmente allo stesso modo per qualsiasi server Apache di Windows, con differenze solo nel punto in cui potresti trovare i file di configurazione di Apache.
Ci sono 3 passaggi per creare il tuo primo host virtuale in Apache e solo 2 se ne hai già uno definito.
- Creare le definizioni dell'host virtuale
- Aggiungi il tuo nuovo nome di dominio al file HOSTS.
- Rimuovere il commento dalla riga in httpd.conf che include il file di definizione degli host virtuali.
Passaggio 1 , creare le definizioni dell'host virtuale
Modifica il file chiamato in httpd-hosts.conf
cui risiede WampServer
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(I numeri di versione di Apache possono differire, attiva il cervello prima di continuare)
Se è la prima volta che modifichi questo file, rimuovi il codice di esempio predefinito, è inutile.
Presumo che vogliamo creare una definizione per un sito chiamato project1 che vive
\wamp\www\project1
Molto importante, prima dobbiamo assicurarci che localhost funzioni ancora in modo che sia la prima definizione VHOST che inseriremo in questo file.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Ora definiamo il nostro progetto: e questo ovviamente lo fai per ciascuno dei tuoi progetti quando ne inizi uno nuovo.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
NOTA: che ogni host virtuale sia il proprio DocumentRoot
definito. Ci sono anche molti altri parametri che puoi aggiungere a una definizione di host virtuali, controlla la documentazione di Apache.
Piccolo a parte
Il modo in cui gli host virtuali funzionano in Apache: la prima definizione in questo file sarà anche il sito predefinito, quindi se il nome di dominio utilizzato nel browser non corrisponde a nessun dominio ospitato virtualmente effettivamente definito, rendendo localhost il primo dominio nel file è il sito che viene caricato se un tentativo di hacking utilizza solo il tuo indirizzo IP. Quindi, se ci assicuriamo che la sicurezza di Apache per questo dominio sia SEMPRE IMPOSTATA SU
Require local
qualsiasi hack casuale da un indirizzo esterno riceverà un errore e non entrerà nel tuo PC, ma in caso di errore di ortografia un dominio ti verrà mostrata la homepage di WampServer, perché sei sullo stesso PC di WampServer e quindi local
.
Passaggio 2 :
Aggiungi il tuo nuovo nome di dominio al file HOSTS. Ora dobbiamo aggiungere il nome di dominio che abbiamo utilizzato nella definizione dell'host virtuale al file HOSTS in modo che Windows sappia dove trovarlo. Questo è simile alla creazione di un record DNS A, ma in questo caso è visibile solo su questo PC specifico.
modificare C:\windows\system32\drivers\etc\hosts
Il file non ha estensione e dovrebbe rimanere tale. Fai attenzione al blocco note, poiché potrebbe provare ad aggiungere .txt
un'estensione se non hai un editor migliore. Ti suggerisco di scaricare Notepad ++, è gratuito e un ottimo editor.
Anche questo è un file protetto, quindi devi modificarlo con i privilegi di amministratore, quindi avvia l'editor utilizzando l' opzione di menu Esegui come amministratore .
Il file hosts dovrebbe avere questo aspetto una volta completate queste modifiche
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Nota che dovresti avere le definizioni qui per l'indirizzo di loopback IPV4 127.0.0.1
e anche l'indirizzo di loopback IPV6 ::1
poiché Apache ora è a conoscenza di IPV6 e il browser utilizzerà IPV4 o IPV6 o entrambi. Non ho idea di come decida quale utilizzare, ma può essere utilizzato se hai lo stack IPV6 attivato e la maggior parte dei sistemi operativi Windows funziona a partire da XP SP3.
Ora dobbiamo dire a Windows di aggiornare la cache del nome di dominio, quindi avvia di nuovo una finestra di comando utilizzando nuovamente l' opzione di menu Esegui come amministratore e procedi come segue.
net stop dnscache
net start dnscache
Ciò costringe Windows a svuotare la cache del nome di dominio e ricaricarlo, ricaricandolo rileggerà il file HOSTS, quindi ora conosce il dominio project1
.
Passaggio 3 : rimuovere il commento dalla riga in httpd.conf che include il file di definizione degli host virtuali.
Modifica il tuo httpd.conf, usa i menu wampmanager.exe per assicurarti di modificare il file corretto.
Trova questa riga in httpd.conf
E basta rimuovere il #
per rimuovere il commento da quella riga.
Per attivare questa modifica in te che esegui Apache dobbiamo ora arrestare e riavviare il servizio Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Ora se l'icona WAMP nella barra delle applicazioni non diventa di nuovo VERDE, significa che probabilmente hai fatto qualcosa di sbagliato nel \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
file.
Se è così, ecco un meccanismo utile per scoprire cosa c'è che non va. Utilizza una funzionalità di Apache exe (httpd.exe) per controllare i suoi file di configurazione e segnalare gli errori per nome file e numeri di riga.
Avvia una finestra di comando.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Quindi correggi gli errori e riprova finché non ottieni l'output
Syntax OK
Adesso c'è un'altra cosa.
In realtà ci sono 2 nuove voci di menu nel sistema di menu di wampmanager. Uno chiamato "I miei progetti" che è attivato per impostazione predefinita. E un secondo, chiamato "My Virtual Hosts" , che non è attivato di default.
"I miei progetti" elencherà qualsiasi sottodirectory della directory \ wamp \ www e fornirà un collegamento per avviare il sito in quella sottodirectory. Come ho detto prima, avvia 'project1` e non' localhost / project1 ', quindi per far funzionare il collegamento dobbiamo creare una definizione di host virtuale per fare in modo che questo collegamento avvii effettivamente quel sito nel tuo browser, senza la definizione di host virtuale è probabile che lo faccia avviare una ricerca sul Web per il nome del sito come parola chiave o semplicemente restituire una condizione di sito non trovato.
La voce di menu "I miei host virtuali" è leggermente diversa. Cerca il file utilizzato per definire gli host virtuali (ci arriveremo tra un minuto) e crea collegamenti a menu per ogni parametro ServerName che trova e crea una voce di menu per ciascuno. Questo può sembrare un po 'confuso poiché una volta creata una definizione di host virtuale per le sottodirectory della cartella \ wamp \ www, alcuni elementi appariranno sia nel menu "I miei progetti" che nel menu "I miei host virtuali".
Come si attiva questo altro menu "I miei host virtuali"?
- Fai un backup del file \ wamp \ wampmanager.tpl, nel caso in cui commetti un errore, è un file molto importante.
- Modifica il file \ wamp \ wampmanager.tpl
- Trova questo parametro
;WAMPPROJECTSUBMENU
, si trova nella sezione "[Menu.Left]".
- Aggiungi questo nuovo parametro
;WAMPVHOSTSUBMENU
prima o dopo il ;WAMPPROJECTSUBMENU
parametro.
- Salva il file.
- Ora fai clic con il pulsante destro del mouse sull'icona di wampmanager e seleziona "Aggiorna". Se questo non aggiunge il menu, "esci" e riavvia wampmanager.
Nota importante
Il nuovo menu apparirà solo se hai già definito alcuni host virtuali! Altrimenti non vedrai alcuna differenza fino a quando non definirai un VHOST.
Ora, se lo porti alla sua estensione logica
È ora possibile spostare il codice del sito Web completamente fuori dalla \wamp\
struttura delle cartelle semplicemente modificando il parametro DocumentRoot nella definizione VHOST. Quindi per esempio potresti fare questo:
Crea una cartella sul disco wamp o qualsiasi altro disco (attenzione alle unità di rete, sono un po 'più complicate)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Ora copia il codice del tuo sito o inizia a crearlo nella \websites\example.com\www
cartella e definisci il tuo VHOST in questo modo:
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
Quindi aggiungi questo nuovo dominio di sviluppo al file HOSTS:
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
NOTA: non è una buona idea usare un ServerName o ServerAlias che è lo stesso del tuo nome di dominio live, come se avessimo usato example.com come ServerName significherebbe che non potremmo più raggiungere il vero sito live da questo PC poiché indirizzerebbe example.com a 127.0.0.1, cioè questo PC e non su Internet.
INOLTRE: vedi che ho consentito l'accesso a questo sito da Internet dall'interno delle definizioni VHOST, questa modifica si applicherà solo a questo sito e nessun altro. Molto utile per consentire a un client di visualizzare le modifiche per circa un'ora senza doverle copiare sul server live. Ciò significa che dobbiamo modificare questo file manualmente per attivare e disattivare questo accesso piuttosto che utilizzare la voce di menu Metti in linea / non in linea su wampmanager.
Inoltre ho aggiunto alcune modifiche alla configurazione PHP, ancora una volta che si applicheranno solo a questo sito. Molto utile quando si mantiene un sito con requisiti specifici a differenza di tutti gli altri siti gestiti. Immagino che possiamo presumere dai parametri utilizzati che ha una pagina a lungo in esecuzione da qualche parte ed è scritta molto male e non funzionerà con errori visualizzati sul browser senza creare un orribile pasticcio della pagina. Credimi, esistono siti come questo e le persone vogliono ancora che vengano mantenuti male . Ma questo significa che dobbiamo solo modificare questi parametri per questo sito specifico e non a livello globale per tutti i siti virtuali in esecuzione su WampServer.