So erstellen Sie einen virtuellen Host in WampServer
WAMPServer 3 hat diesen Vorgang erheblich vereinfacht!
Sie können fast alles mit einem Dienstprogramm ausführen, das als Teil von WAMPServer bereitgestellt wird.
Erstellen Sie einen Ordner mit Ihrer project.site. Dies kann sich unter dem C:\wamp\www\
Verzeichnis oder in einem völlig separaten Ordner wie befinden C:\websites
.
Erstellen Sie einen Ordner an dem von Ihnen ausgewählten Ort C:\websites\project1\www
oder unterc:\wamp\www\project1\www
Öffnen Sie nun localhost wampmanager->localhost
und klicken Sie auf den Link Add a Virtual Host
unter dem Abschnitt TOOLS auf der Homepage.
Sie sehen eine Seite wie diese:
Füllen Sie die Felder aus, wie in den Anweisungen über jedem Feld angegeben
Die Virtual Host-Konfiguration wurde für Sie erstellt.
Jetzt müssen Sie den DNS-Cache neu starten. Sie können dies über die Wampmanager-Menüs wie folgt tun right click wampmanager->Tools->Restart DNS
. Der DNS-Cache wird neu gestartet, und dann wird auch Apache gestoppt und neu gestartet. Wenn das Wampmanager-Symbol wieder grün leuchtet, ist alles abgeschlossen.
Jetzt müssen Sie eine einfache index.php
Datei erstellen oder Ihre Site in dem oben erstellten Ordner installieren.
Angenommen, Ihre VH wurde aufgerufen. Diesen project.dev
Namen sollten Sie im Abschnitt Ihre virtuellen Hosts auf der WAMPServer-Homepage sehen.
Sie können die Site über dieses Menü starten oder einfach den neuen Domainnamen in der Adressleiste EG verwenden project1.dev
und die Site sollte gestartet werden.
Alter WAMPServer 2.5-Mechanismus, oder wenn Sie alles manuell erledigen möchten
In WampServer 2.5 und höher wurde das Konzept geändert, und es gibt einen guten Grund für diese Änderung!
In WampServer wird jetzt dringend empfohlen, für jedes Ihrer Projekte einen virtuellen Host zu erstellen, selbst wenn Sie diese in einer \wamp\www\subfolder
Struktur halten.
Dokumentation zu virtuellen Hosts
Beispiele für virtuelle Hosts
Die WampServer-Homepage ( \wamp\www\index.php
) erwartet nun, dass Sie für alle Ihre Projekte einen virtuellen Host erstellt haben, und funktioniert daher nur dann ordnungsgemäß, wenn Sie dies tun.
Geschichte
Um Anfängern das Erlernen von PHP Apache und MySQL mit WampServer zu erleichtern, wurde empfohlen, Unterordner unter dem \wamp\www\
Ordner zu erstellen .
wamp
|-- www
|-- Chapter1
|-- Chapter2
|-- etc
Diese Unterordner werden dann als Links auf der WampServer-Homepage unter einem Menü mit dem Namen "Ihre Projekte" angezeigt, und diese Links enthalten einen Link zu localhost/subfoldername
.
Akzeptabel nur für einfache Tutorials
Dies machte dem Anfänger das Leben leicht und war beispielsweise für die folgenden Tutorials zum Erlernen der PHP-Codierung durchaus akzeptabel. Es war jedoch nie für die Entwicklung einer echten Website vorgesehen, die Sie später auf Ihren live gehosteten Server kopieren möchten. Wenn Sie diesen Mechanismus verwenden, verursacht dies häufig Probleme, da die Konfiguration der Live-Sites nicht mit Ihrer Entwicklungskonfiguration übereinstimmt.
Das Problem für eine echte Website-Entwicklung.
Der Grund dafür ist natürlich, dass die Standardeinstellung für DocumentRoot für wamp lautet
DocumentRoot "c:/wamp/www/"
unabhängig davon, wie Ihr Unterordner genannt wurde. Dieses Ment, das häufig PHP-Code verwendete, der die Struktur oder Ihre Site abfragte, erhielt beim Ausführen auf Ihrem Entwicklungs-WampServer andere Informationen als beim Ausführen auf einem live gehosteten Server, wobei die DocumentRoot-Konfiguration auf den Ordner oben auf der Website verweist Dateihierarchie. Diese Art von Code existiert in vielen Frameworks und CMS, zum Beispiel WordPress und Joomla usw.
Beispielsweise
Nehmen wir an, wir haben ein Projekt namens project1 in wamp\www\project1
und werden falsch ausgeführt alslocalhost/project1/index.php
Dies wird von einigen der fraglichen PHP-Befehle gemeldet:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Wenn wir diese Site nun mithilfe einer Virtual Host-Definition korrekt definiert und http://project1
ausgeführt haben, stimmen die Ergebnisse auf der WAMPServer-Entwicklungssite mit denen überein, die in einer live gehosteten Umgebung empfangen wurden.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Nun mag dieser Unterschied zunächst trivial erscheinen, aber wenn Sie beispielsweise ein Framework wie WordPress oder eines der CMS wie Joomla verwenden, kann und verursacht dies Probleme, wenn Sie Ihre Site auf einen Live-Server verschieben.
So erstellen Sie einen virtuellen Host in WampServer
Eigentlich sollte dies für jeden Windows-Apache-Server grundsätzlich gleich funktionieren, mit Unterschieden nur dort, wo Sie die Apache-Konfigurationsdateien finden.
Es gibt 3 Schritte, um Ihren ersten virtuellen Host in Apache zu erstellen, und nur 2, wenn Sie bereits einen definiert haben.
- Erstellen Sie die Definition (en) des virtuellen Hosts
- Fügen Sie Ihren neuen Domainnamen zur HOSTS-Datei hinzu.
- Kommentieren Sie die Zeile in httpd.conf aus, die die Definitionsdatei für virtuelle Hosts enthält.
Schritt 1 : Erstellen Sie die Definition (en) des virtuellen Hosts.
Bearbeiten Sie die aufgerufene Datei, in httpd-hosts.conf
der sich WampServer befindet
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Die Versionsnummern von Apache können abweichen. Schalten Sie das Gehirn ein, bevor Sie fortfahren.)
Wenn Sie diese Datei zum ersten Mal bearbeiten, entfernen Sie den Standardbeispielcode. Dies ist nutzlos.
Ich gehe davon aus, dass wir eine Definition für eine Site namens project1 erstellen möchten, in der lebt
\wamp\www\project1
Sehr wichtig, zuerst müssen wir sicherstellen, dass localhost noch funktioniert, damit dies die erste VHOST-Definition ist, die wir in diese Datei einfügen.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Jetzt definieren wir unser Projekt: und das tun Sie natürlich für jedes Ihrer Projekte, wenn Sie ein neues starten.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
HINWEIS: Jeder virtuelle Host wird als eigener DocumentRoot
definiert. Es gibt auch viele andere Parameter, die Sie einer Definition für virtuelle Hosts hinzufügen können. Überprüfen Sie die Apache-Dokumentation.
Klein beiseite
Funktionsweise virtueller Hosts in Apache: Die erste Definition in dieser Datei ist auch die Standardwebsite. Sollte der im Browser verwendete Domänenname nicht mit einer tatsächlich definierten virtuell gehosteten Domäne übereinstimmen, wird localhost daher zur ersten Domäne in der Datei Es ist die Site, die geladen wird, wenn ein Hack-Versuch nur Ihre IP-Adresse verwendet. Wenn wir also sicherstellen, dass die Apache-Sicherheit für diese Domain IMMER auf eingestellt ist
Require local
Jeder gelegentliche Hack von einer externen Adresse erhält einen Fehler und gelangt nicht auf Ihren PC. Sollten Sie jedoch eine Domain falsch schreiben, wird Ihnen die WampServer-Homepage angezeigt, da Sie sich auf demselben PC wie WampServer befinden und daher local
.
Schritt 2 :
Fügen Sie Ihren neuen Domainnamen zur HOSTS-Datei hinzu. Jetzt müssen wir den Domänennamen, den wir in der Definition des virtuellen Hosts verwendet haben, zur HOSTS-Datei hinzufügen, damit Windows weiß, wo er zu finden ist. Dies ähnelt dem Erstellen eines DNS A-Eintrags, ist jedoch nur in diesem Fall auf diesem bestimmten PC sichtbar.
Bearbeiten C:\windows\system32\drivers\etc\hosts
Die Datei hat keine Erweiterung und sollte dies auch bleiben. Achten .txt
Sie auf den Editor , da dieser möglicherweise versucht, eine Erweiterung hinzuzufügen, wenn Sie keinen besseren Editor haben. Ich schlage vor, Sie laden Notepad ++ herunter, es ist kostenlos und ein sehr guter Editor.
Dies ist auch eine geschützte Datei, daher müssen Sie sie mit Administratorrechten bearbeiten. Starten Sie daher Ihren Editor über die Menüoption Als Administrator ausführen.
Die Hosts-Datei sollte so aussehen, wenn Sie diese Änderungen abgeschlossen haben
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Beachten Sie, dass Sie hier Definitionen für die IPV4-Loopback-Adresse 127.0.0.1
und auch für die IPV6-Loopback-Adresse haben sollten::1
da Apache jetzt IPV6-fähig ist und der Browser entweder IPV4 oder IPV6 oder beides verwendet. Ich habe keine Ahnung, wie es entscheidet, welche verwendet werden soll, aber es kann entweder verwendet werden, wenn Sie den IPV6-Stack aktiviert haben, und die meisten Windows-Betriebssysteme tun dies ab XP SP3.
Jetzt müssen wir Windows anweisen, seinen Domänennamen-Cache zu aktualisieren. Starten Sie daher erneut ein Befehlsfenster, indem Sie die Menüoption Als Administrator ausführen erneut ausführen, und führen Sie die folgenden Schritte aus.
net stop dnscache
net start dnscache
Dadurch wird Windows gezwungen, den Domänennamen-Cache zu löschen und neu zu laden. Beim erneuten Laden wird die HOSTS-Datei erneut gelesen, sodass es jetzt über die Domäne informiert ist project1
.
Schritt 3 : Kommentieren Sie die Zeile in httpd.conf aus, die die Definitionsdatei für virtuelle Hosts enthält.
Bearbeiten Sie Ihre httpd.conf und verwenden Sie die Menüs wampmanager.exe, um sicherzustellen, dass Sie die richtige Datei bearbeiten.
Finden Sie diese Zeile in httpd.conf
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
Und entfernen Sie einfach das, #
um diese Zeile zu kommentieren.
Um diese Änderung bei der Ausführung von Apache zu aktivieren, müssen wir jetzt den Apache-Dienst stoppen und neu starten.
wampmanager.exe -> Apache -> Service -> Restart Service
Wenn das WAMP-Symbol in der Taskleiste nicht wieder GRÜN wird, bedeutet dies, dass Sie wahrscheinlich etwas in der \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
Datei falsch gemacht haben .
Wenn ja, ist hier ein nützlicher Mechanismus, um herauszufinden, was falsch ist. Es verwendet eine Funktion der Apache-Exe (httpd.exe), um die Konfigurationsdateien zu überprüfen und Fehler anhand von Dateinamen und Zeilennummern zu melden.
Starten Sie ein Befehlsfenster.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Beheben Sie also die Fehler und wiederholen Sie den Test, bis Sie die Ausgabe erhalten
Syntax OK
Jetzt gibt es noch eine Sache.
Es gibt tatsächlich 2 neue Menüpunkte im Wampmanager-Menüsystem. Eine mit dem Namen "Meine Projekte", die standardmäßig aktiviert ist. Und eine zweite mit dem Namen "Meine virtuellen Hosts". , die standardmäßig nicht aktiviert ist.
'Meine Projekte' listet alle Unterverzeichnisse des Verzeichnisses \ wamp \ www auf und bietet einen Link zum Starten der Site in diesem Unterverzeichnis. Wie ich bereits sagte, wird "project1" und nicht "localhost / project1" gestartet. Damit der Link funktioniert, müssen wir eine Virtual Host-Definition erstellen, damit dieser Link diese Site tatsächlich in Ihrem Browser startet, ohne die Definition des Virtual Host Starten Sie eine Websuche nach dem Site-Namen als Schlüsselwort oder geben Sie einfach eine nicht gefundene Site-Bedingung zurück.
Der Menüpunkt "Meine virtuellen Hosts" ist etwas anders. Es durchsucht die Datei, die zum Definieren von virtuellen Hosts verwendet wird (wir werden gleich darauf zurückkommen) und erstellt Menüverknüpfungen für jeden gefundenen ServerName-Parameter und erstellt für jeden einen Menüpunkt. Dies mag etwas verwirrend erscheinen, da nach dem Erstellen einer Virtual Host-Definition für die Unterverzeichnisse des Ordners \ wamp \ www einige Elemente sowohl im Menü "Meine Projekte" als auch im Menü "Meine virtuellen Hosts" angezeigt werden.
Wie schalte ich dieses andere Menü "Meine virtuellen Hosts" ein?
- Erstellen Sie eine Sicherungskopie der Datei \ wamp \ wampmanager.tpl. Falls Sie einen Fehler machen, handelt es sich um eine sehr wichtige Datei.
- Bearbeiten Sie die Datei \ wamp \ wampmanager.tpl
- Suchen Sie diesen Parameter
;WAMPPROJECTSUBMENU
im Abschnitt '[Menu.Left]'.
- Fügen Sie diesen neuen Parameter
;WAMPVHOSTSUBMENU
entweder vor oder nach dem hinzu;WAMPPROJECTSUBMENU
Parameter hinzu.
- Speicher die Datei.
- Klicken Sie nun mit der rechten Maustaste auf das Wampmanager-Symbol und wählen Sie "Aktualisieren". Wenn das Menü dadurch nicht hinzugefügt wird, beenden Sie den Wampmanager und starten Sie ihn neu.
Großer Hinweis
Das neue Menü wird nur angezeigt, wenn Sie bereits einige virtuelle Hosts definiert haben! Andernfalls sehen Sie keinen Unterschied, bis Sie einen VHOST definieren.
Nun, wenn Sie dies zu seiner logischen Erweiterung nehmen
Sie können Ihren Website-Code jetzt vollständig außerhalb von verschieben \wamp\
Ordnerstruktur verschieben, indem Sie einfach den DocumentRoot-Parameter in der VHOST-Definition ändern. So könnten Sie zum Beispiel Folgendes tun:
Erstellen Sie einen Ordner auf der Wamp-Festplatte oder einer anderen Festplatte (Vorsicht vor dem Netzwerklaufwerk, diese sind etwas komplizierter).
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Sie kopieren jetzt Ihren Site-Code in oder erstellen ihn im \websites\example.com\www
Ordner und definieren Ihren VHOST folgendermaßen:
<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>
Fügen Sie dann diese neue Entwicklungsdomäne zur HOSTS-Datei hinzu:
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
HINWEIS: Es ist keine gute Idee, einen Servernamen oder ServerAlias zu verwenden, der mit Ihrem Live-Domainnamen identisch ist. Wenn wir example.com als Servernamen verwendet hätten, würde dies bedeuten, dass wir von hier aus nicht mehr zur realen Live-Site gelangen könnten PC, wie es example.com auf 127.0.0.1 leiten würde, dh diesen PC und nicht ins Internet.
AUCH: Da ich den Zugriff auf diese Site aus dem Internet innerhalb der VHOST-Definitionen zugelassen habe, gilt diese Änderung nur für diese Site und keine andere. Sehr nützlich, damit ein Client Ihre Änderungen etwa eine Stunde lang anzeigen kann, ohne sie auf den Live-Server kopieren zu müssen. Dies bedeutet, dass wir diese Datei manuell bearbeiten müssen, um diesen Zugriff ein- und auszuschalten, anstatt den Menüpunkt Online / Offline setzen auf wampmanager zu verwenden.
Außerdem habe ich einige Änderungen an der PHP-Konfiguration hinzugefügt, die wiederum nur für diese eine Site gelten. Sehr nützlich, wenn Sie eine Site mit bestimmten Anforderungen pflegen, im Gegensatz zu allen anderen Sites, die Sie pflegen. Ich denke, wir können von den verwendeten Parametern annehmen, dass es irgendwo eine lange laufende Seite gibt und es sehr schlecht geschrieben ist und nicht mit Fehlern ausgeführt wird, die im Browser angezeigt werden, ohne die Seite schrecklich zu verwirren. Glauben Sie mir, dass es solche Websites gibt und die Leute immer noch wollen, dass sie schlecht gepflegt werden . Dies bedeutet jedoch, dass wir diese Parameter nur für diese bestimmte Site und nicht global für alle virtuellen Sites ändern müssen, die auf WampServer ausgeführt werden.