Mysql
 sql >> Database >  >> RDS >> Mysql

I collegamenti al progetto non funzionano su Wamp Server

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 sotto il 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 c:\wamp\www\project1\www

  • Ora apri localhost wampmanager->localhost e clicca sul link Add a Virtual Host nella sezione STRUMENTI della 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 installa il tuo sito nella cartella che hai creato sopra.

  • Supponendo che il tuo VH si chiamasse project.dev Dovresti vedere quel nome sotto I tuoi host virtuali Sezione della home page di WAMPServer.

  • Puoi 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 lanciato.

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 un \wamp\www\subfolder struttura.

Documentazione 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.

Cronologia

Per semplificare la vita ai principianti che utilizzano WampServer per imparare PHP Apache e MySQL è stato suggerito di creare sottocartelle in \wamp\www\ cartella.

wamp
  |-- www
       |-- Chapter1
       |-- Chapter2
       |-- etc

Queste sottocartelle verrebbero quindi mostrate 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 tutorial semplici

Questo ha semplificato la vita al principiante assoluto ed era perfettamente accettabile, ad esempio, per coloro che seguivano tutorial per imparare la codifica PHP. Tuttavia, non è mai stato concepito per l'uso durante lo sviluppo di un sito Web reale che in seguito avresti voluto copiare sul tuo server ospitato dal vivo. In effetti, se utilizzavi questo meccanismo, spesso causavano problemi poiché la configurazione dei siti live non corrispondeva alla configurazione di sviluppo.

Il problema per un vero sviluppo di siti web.

La ragione di ciò è ovviamente che l'impostazione predefinita di DocumentRoot per wamp è

DocumentRoot "c:/wamp/www/"

indipendentemente da come fosse chiamata la tua sottocartella. Questo mento che spesso utilizzava il codice PHP che interrogava la struttura o il tuo sito riceveva informazioni diverse durante l'esecuzione sul WampServer di sviluppo rispetto a quelle che riceverebbe durante l'esecuzione su un server ospitato dal vivo, dove la configurazione di DocumentRoot punta a la cartella nella parte superiore della gerarchia dei file del sito Web. Questo tipo di codice esiste in molti framework e CMS, ad esempio WordPress e Joomla, ecc.

Ad esempio

Diciamo che abbiamo un progetto chiamato project1 tenuto in wamp\www\project1 ed eseguito in modo errato come localhost/project1/index.php

Questo è ciò che 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 lo avessimo eseguito come http://project1 i risultati sul sito di sviluppo di WAMPServer corrisponderanno a quelli ricevuti in un ambiente ospitato dal vivo.

$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1

Ora questa differenza può sembrare banale all'inizio, 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à dovrebbe funzionare praticamente allo stesso modo per qualsiasi server Apache di Windows, con differenze solo nella posizione 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.

  1. Crea la/e definizione/i di host virtuale
  2. Aggiungi il tuo nuovo nome di dominio al file HOSTS.
  3. Decommenta la riga in httpd.conf che include il file di definizione degli host virtuali.

Passaggio 1 , Crea la/e definizione/i di host virtuale

Modifica il file chiamato httpd-hosts.conf che per WampServer vive in

\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf

(I numeri di versione di Apache possono differire, coinvolgi il cervello prima di continuare)

Se è la prima volta che modifichi questo file, rimuovi il codice di esempio predefinito, non serve.

Presumo che vogliamo creare una definizione per un sito chiamato project1 che vive in

\wamp\www\project1

Molto importante, per prima cosa 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 mentre 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 ha la propria DocumentRoot definito. Ci sono anche molti altri parametri che puoi aggiungere a una definizione di Virtual Host, controlla la documentazione di Apache.

Piccolo a parte

Il modo in cui funzionano gli host virtuali 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 virtualmente ospitato 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 se sbagli a scrivere un dominio ti verrà mostrata la home page 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. È simile alla creazione di un record DNS A, ma in questo caso è visibile solo su questo PC specifico.

Modifica 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 un .txt estensione se non hai un editor migliore. Ti suggerisco di scaricare Notepad ++, è un editor gratuito e molto buono.

Anche questo è un file protetto, quindi devi modificarlo con i privilegi di amministratore, quindi avvia il tuo editor usando Esegui come amministratore opzione di menu.

Il file hosts dovrebbe apparire così una volta completate queste modifiche

127.0.0.1 localhost
127.0.0.1 project1

::1 localhost
::1 project1

Tieni presente 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 usare, ma può usarlo 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 dei nomi di dominio, quindi avvia nuovamente una finestra di comando utilizzando Esegui come amministratore di nuovo l'opzione di menu e procedi come segue.

net stop dnscache
net start dnscache

Questo costringe Windows a svuotare la cache del suo nome di dominio e ricaricarlo, ricaricandolo rileggerà il file HOSTS quindi ora conosce il dominio project1 .

Passaggio 3 :Decommenta la 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

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

E rimuovi semplicemente il # per rimuovere il commento da quella riga.

Per attivare questa modifica in te che esegui Apache, dobbiamo ora fermare 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 in \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 funzione di Apache exe (httpd.exe) per controllare i suoi file di configurazione e segnalare gli errori in base al nome del file e ai numeri di riga.

Avvia una finestra di comando.

cd \wamp\bin\apache\apache2.4.9\bin
httpd -t

Quindi correggi gli errori e riprova fino a quando non ottieni l'output

Syntax OK

Ora 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 'I miei host virtuali' , che non è attivato per impostazione predefinita.

"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 "progetto1" e non "localhost/progetto1" in modo da rendere il collegamento funziona dobbiamo creare una definizione di host virtuale per fare in modo che questo collegamento avvii effettivamente quel sito nel browser, senza la definizione di host virtuale è probabile che avvii una ricerca sul Web per il nome del sito come parola chiave o semplicemente restituisca una condizione di sito non trovato.

La voce di menu "I miei host virtuali" è leggermente diversa. Cerca nel file che viene utilizzato per definire gli host virtuali (ci arriveremo tra un minuto) e crea collegamenti di menu per ogni parametro ServerName che trova e crea una voce di menu per ciascuno. Questo può sembrare un po' confuso una volta creato 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 faccio ad attivare 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 \wamp\wampmanager.tpl
  • Trova questo parametro ;WAMPPROJECTSUBMENU , è nella sezione '[Menu.Sinistra]'.
  • 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, 'exit' e riavvia wampmanager.

Grande nota Il nuovo menu apparirà solo se hai già definito degli Host Virtuali! Altrimenti non vedrai alcuna differenza finché non definisci un VHOST.

Ora, se lo porti alla sua estensione logica

Ora puoi spostare il codice del tuo sito web completamente al di fuori di \wamp\ struttura delle cartelle semplicemente modificando il parametro DocumentRoot nella definizione VHOST. Quindi, ad esempio, potresti farlo:

Crea una cartella sul disco wamp o su qualsiasi altro disco (attenzione all'unità di rete, sono un po' più complicati)

D:
MD websites
CD websites
MD example.com
CD example.com
MD www

Ora copi il codice del tuo sito o inizi a crearlo in \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ù accedere al live reale sito da questo PC in quanto indirizzerebbe example.com a 127.0.0.1, ovvero 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 a nessun altro. Molto utile per consentire a un client di visualizzare le modifiche per un'ora o giù di lì senza doverle copiare sul server live. Ciò significa che dobbiamo modificare questo file manualmente per attivare e disattivare questo accesso piuttosto che utilizzare Metti online/ Voce di menu offline 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 che si gestiscono. Immagino che dai parametri utilizzati si possa presumere che abbia una pagina di lunga durata da qualche parte ed è scritta molto male e non verrà eseguita con errori visualizzati sul browser senza creare un pasticcio orribile della pagina. Credimi, siti come questo esistono e le persone vogliono ancora che vengano mantenuti male . Ma questo significa che dobbiamo modificare questi parametri solo per questo sito specifico e non globalmente per tutti i siti virtuali in esecuzione su WampServer.