Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Projektlinks funktionieren nicht auf Wamp Server

So erstellen Sie einen virtuellen Host in WampServer

WAMPServer 3 hat diesen Prozess viel einfacher gemacht!

Sie können fast alles mit einem Dienstprogramm tun, das als Teil von WAMPServer bereitgestellt wird.

  • Erstellen Sie darin einen Ordner, der Ihre project.site enthält. Dies kann unter C:\wamp\www\ sein Verzeichnis oder in einem komplett separaten Ordner wie C:\websites .

  • Erstellen Sie einen Ordner innerhalb des von Ihnen gewählten Speicherorts, z. B. C:\websites\project1\www oder unter c:\wamp\www\project1\www

  • Öffnen Sie nun localhost wampmanager->localhost und klicken Sie auf den Link Virtuellen Host hinzufügen im Abschnitt TOOLS auf der Homepage.

Sie sehen eine Seite wie diese:

  • Füllen Sie die Felder gemäß den Anweisungen über jedem Feld aus

  • Die Konfiguration des virtuellen Hosts 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:Rechtsklick auf wampmanager->Extras->DNS neu starten . Der DNS-Cache wird neu gestartet und dann wird auch Apache gestoppt und neu gestartet. Wenn das Wampmanager-Symbol wieder grün wird, ist alles abgeschlossen.

  • Jetzt müssen Sie eine einfache index.php erstellen Datei oder installieren Sie Ihre Website in dem Ordner, den Sie oben erstellt haben.

  • Angenommen, Ihre VH hieß project.dev Sie sollten diesen Namen unter Ihre virtuellen Hosts sehen Abschnitt der WAMPServer-Homepage.

  • Sie können die Site von diesem Menü aus starten oder einfach den neuen Domänennamen in der Adressleiste verwenden, z. B. project1.dev und die Seite sollte starten.

Alter WAMPServer 2.5-Mechanismus oder wenn Sie alles manuell erledigen möchten

Es gab eine Konzeptänderung in WampServer 2.5 und höher und es gibt einen guten Grund für diese Änderung!

In WampServer wird jetzt DRINGEND empfohlen, einen virtuellen Host für jedes Ihrer Projekte zu erstellen, selbst wenn Sie sie in einem \wamp\www\subfolder halten Struktur.

Dokumentation zu virtuellen Hosts

Beispiele für virtuelle Hosts

Die Homepage von WampServer ( \wamp\www\index.php ) erwartet nun, dass Sie für alle Ihre Projekte einen virtuellen Host erstellt haben und funktioniert daher nur dann ordnungsgemäß.

Geschichte

Um Anfängern das Leben zu erleichtern, die WampServer verwenden, um PHP, Apache und MySQL zu lernen, wurde vorgeschlagen, dass Sie Unterordner unter \wamp\www\ erstellen Ordner.

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

Diese Unterordner würden dann als Links auf der WampServer-Homepage unter einem Menü namens „Ihre Projekte“ angezeigt, und diese Links würden einen Link zu localhost/subfoldername enthalten .

Nur für einfache Tutorials akzeptabel

Dies machte dem absoluten Anfänger das Leben leicht und war zum Beispiel für die folgenden Tutorials zum Erlernen der PHP-Codierung durchaus akzeptabel. Es war jedoch nie für die Entwicklung einer echten Website gedacht, die Sie später auf Ihren live gehosteten Server kopieren möchten. Tatsächlich verursachte die Verwendung dieses Mechanismus häufig Probleme, da die Konfiguration der Live-Sites nicht mit Ihrer Entwicklungskonfiguration übereinstimmte.

Das Problem für echte Website-Entwicklung.

Der Grund dafür ist natürlich, dass die Standard-DocumentRoot-Einstellung für wamp

ist

DocumentRoot "c:/wamp/www/"

unabhängig davon, wie Ihr Unterordner hieß. Dies bedeutet, dass häufig verwendeter PHP-Code, der die Struktur abfragte, oder Ihre Website andere Informationen erhielt, wenn sie auf Ihrem Entwicklungs-WampServer ausgeführt wurde, als wenn sie auf einem live gehosteten Server ausgeführt wurde, auf den die DocumentRoot-Konfiguration verweist der Ordner ganz oben in der Dateihierarchie der Website. Diese Art von Code ist in vielen Frameworks und CMS vorhanden, z. B. WordPress und Joomla usw.

Zum Beispiel

Nehmen wir an, wir haben ein Projekt namens project1 in wamp\www\project1 und fälschlicherweise als localhost/project1/index.php ausgeführt werden

Dies würde von einigen der fraglichen PHP-Befehle gemeldet werden:

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

Nun, wenn wir diese Site mit einer Virtual Host-Definition korrekt definiert und als http://project1 ausgeführt hätten Die Ergebnisse auf der WAMPServer-Entwicklungsseite stimmen mit denen überein, die in einer live gehosteten Umgebung empfangen werden.

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

Nun mag dieser Unterschied auf den ersten Blick trivial erscheinen, aber wenn Sie beispielsweise ein Framework wie WordPress oder eines der CMS wie Joomla verwenden, kann dies zu Problemen führen, wenn Sie Ihre Website auf einen Live-Server verschieben.

So erstellen Sie einen virtuellen Host in WampServer

Eigentlich sollte dies für jeden Windows-Apache-Server im Grunde gleich funktionieren, mit Unterschieden nur darin, wo Sie die Apache-Konfigurationsdateien finden können.

Es gibt 3 Schritte, um Ihren ersten virtuellen Host in Apache zu erstellen, und nur 2, wenn Sie bereits einen definiert haben.

  1. Erstellen Sie die Definition(en) des virtuellen Hosts
  2. Fügen Sie Ihren neuen Domainnamen zur HOSTS-Datei hinzu.
  3. Entkommentieren Sie die Zeile in httpd.conf, die die Definitionsdatei für virtuelle Hosts enthält.

Schritt 1 , Erstellen Sie die Definition(en) des virtuellen Hosts

Bearbeiten Sie die Datei namens httpd-hosts.conf was für WampServer lebt in

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

(Apache-Versionsnummern können unterschiedlich sein, denken Sie daran, bevor Sie fortfahren)

Wenn Sie diese Datei zum ersten Mal bearbeiten, entfernen Sie den standardmäßigen Beispielcode, er ist nutzlos.

Ich gehe davon aus, dass wir eine Definition für eine Site namens project1 erstellen möchten, die in

lebt
\wamp\www\project1

Sehr wichtig, zuerst müssen wir sicherstellen, dass localhost noch funktioniert, also ist dies die erste VHOST-Definition, die wir in diese Datei einfügen werden.

<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 machst du natürlich für jedes deiner Projekte, wenn du ein neues beginnst.

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/project1"
    ServerName project1
    <Directory  "c:/wamp/www/project1">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

HINWEIS:Dass jeder virtuelle Host als sein eigenes DocumentRoot definiert. Es gibt auch viele andere Parameter, die Sie zu einer Virtual Hosts-Definition hinzufügen können, sehen Sie in der Apache-Dokumentation nach.

Klein beiseite

Die Funktionsweise virtueller Hosts in Apache:Die erste Definition in dieser Datei wird auch die Standard-Site sein, sollte also der im Browser verwendete Domänenname nicht mit einer tatsächlich definierten virtuell gehosteten Domäne übereinstimmen, wird daher localhost zur ersten Domäne in der Datei gemacht Es ist die Website, 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 zufällige Hack von einer externen Adresse wird einen Fehler erhalten und nicht auf Ihren PC gelangen, aber sollten Sie eine Domain falsch schreiben, wird Ihnen die WampServer-Homepage angezeigt, da Sie sich auf demselben PC wie WampServer befinden und daher lokal .

Schritt 2 :

Fügen Sie Ihren neuen Domänennamen zur HOSTS-Datei hinzu. Jetzt müssen wir den Domänennamen, den wir in der Virtual Host-Definition verwendet haben, zur HOSTS-Datei hinzufügen, damit Windows weiß, wo es zu finden ist. Dies ähnelt dem Erstellen eines DNS-A-Eintrags, ist aber in diesem Fall nur auf diesem bestimmten PC sichtbar.

Bearbeiten Sie C:\windows\system32\drivers\etc\hosts

Die Datei hat keine Endung und sollte es auch bleiben. Achten Sie auf Notepad, da es versuchen kann, eine .txt hinzuzufügen Erweiterung, wenn Sie keinen besseren Editor haben. Ich schlage vor, dass Sie Notepad++ herunterladen, es ist kostenlos und ein sehr guter Editor.

Auch dies ist eine geschützte Datei, daher müssen Sie sie mit Administratorrechten bearbeiten, starten Sie also Ihren Editor mit Als Administrator ausführen Menüoption.

Die hosts-Datei sollte so aussehen, wenn Sie diese Bearbeitungen 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 haben sollten und auch die IPv6-Loopback-Adresse ::1 da Apache jetzt IPV6 unterstützt und der Browser entweder IPV4 oder IPV6 oder beide verwendet. Ich habe keine Ahnung, wie es entscheidet, welches verwendet wird, aber es kann beides verwenden, wenn Sie den IPV6-Stack aktiviert haben, und die meisten Windows-Betriebssysteme ab XP SP3.

Jetzt müssen wir Windows anweisen, seinen Domänennamen-Cache zu aktualisieren, also starten Sie erneut ein Befehlsfenster mit Als Administrator ausführen Menüoption erneut und gehen Sie wie folgt vor.

net stop dnscache
net start dnscache

Dies zwingt Windows, seinen Domänennamen-Cache zu löschen und ihn neu zu laden. Beim erneuten Laden wird die HOSTS-Datei neu gelesen, sodass es jetzt über die Domäne project1 Bescheid weiß .

Schritt 3 :Entkommentieren Sie die Zeile in httpd.conf, die die Definitionsdatei für virtuelle Hosts enthält.

Bearbeiten Sie Ihre httpd.conf, verwenden Sie die wampmanager.exe-Menüs, 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 # diese Zeile auskommentieren.

Um diese Änderung in Ihrem laufenden 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 jetzt nicht wieder GRÜN wird, bedeutet dies, dass Sie wahrscheinlich etwas in der Datei \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf Datei.

Wenn ja, ist hier ein nützlicher Mechanismus, um herauszufinden, was falsch ist. Es verwendet eine Funktion der Apache-Exe (httpd.exe), um seine Konfigurationsdateien zu überprüfen und Fehler nach 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 testen Sie erneut, 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. Einer namens 'Meine Projekte' die standardmäßig aktiviert ist. Und eine zweite namens 'Meine virtuellen Hosts' , die standardmäßig nicht aktiviert ist.

„Meine Projekte“ listet alle Unterverzeichnisse des Verzeichnisses \wamp\www auf und stellt einen Link bereit, um die Site in diesem Unterverzeichnis zu starten. Wie ich bereits sagte, startet es „Projekt1“ und nicht „localhost/project1“. Link funktioniert, müssen wir eine Virtual-Host-Definition erstellen, damit dieser Link diese Site tatsächlich in Ihrem Browser startet. Ohne die Virtual-Host-Definition wird wahrscheinlich eine Websuche nach dem Site-Namen als Schlüsselwort gestartet oder es wird nur die Bedingung „Site nicht gefunden“ zurückgegeben.

Der Menüpunkt „Meine virtuellen Hosts“ ist etwas anders. Es durchsucht die Datei, die zum Definieren von virtuellen Hosts verwendet wird (dazu kommen wir gleich) und erstellt Menülinks für jeden gefundenen ServerName-Parameter und erstellt für jeden einen Menüeintrag. Dies mag etwas verwirrend erscheinen, sobald wir es erstellt haben eine virtuelle Host-Definition für die Unterverzeichnisse des Ordners \wamp\www. Einige Elemente erscheinen sowohl im Menü „Meine Projekte“ als auch im Menü „Meine virtuellen Hosts“.

Wie schalte ich dieses andere Menü „Meine virtuellen Hosts“ ein?

  • Machen Sie eine Sicherungskopie der Datei \wamp\wampmanager.tpl, nur für den Fall, dass Sie einen Fehler machen, es ist eine sehr wichtige Datei.
  • Bearbeiten Sie die \wamp\wampmanager.tpl
  • Suchen Sie diesen Parameter ;WAMPPROJECTSUBMENU , es befindet sich im Abschnitt '[Menu.Left]'.
  • Fügen Sie diesen neuen Parameter ;WAMPVHOSTSUBMENU hinzu entweder vor oder nach dem ;WAMPPROJECTSUBMENU Parameter.
  • Speichern Sie die Datei.
  • Klicken Sie nun mit der rechten Maustaste auf das Wampmanager-Symbol und wählen Sie „Aktualisieren“. Wenn dies das Menü nicht hinzufügt, 'beenden' und wampmanager neu starten.

Große Notiz Das neue Menü erscheint nur, 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 bringen

Sie können Ihren Website-Code jetzt vollständig außerhalb des \wamp\ verschieben Ordnerstruktur, indem Sie einfach den DocumentRoot-Parameter in der VHOST-Definition ändern. So könnten Sie beispielsweise Folgendes tun:

Erstellen Sie einen Ordner auf der wamp-Festplatte oder einer anderen Festplatte (Vorsicht bei Netzlaufwerken, sie sind etwas komplizierter)

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

Kopieren Sie nun Ihren Site-Code nach \websites\example.com\www oder beginnen Sie mit der Erstellung Ordner und definieren Sie Ihren VHOST wie folgt:

<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 ServerName oder ServerAlias ​​zu verwenden, der mit Ihrem Live-Domänennamen identisch ist, da die Verwendung von example.com als ServerName bedeuten würde, dass wir nicht mehr zum echten Live gelangen könnten Seite von diesem PC, da sie example.com auf 127.0.0.1 leiten würde, d. h. auf diesen PC und nicht auf das Internet.

AUCH:Sehen Sie, dass ich den Zugriff auf diese Site aus dem Internet innerhalb der VHOST-Definitionen zugelassen habe, diese Änderung gilt nur für diese Site und keine andere. Sehr nützlich, um einem Client zu ermöglichen, Ihre Änderungen etwa eine Stunde lang anzuzeigen, 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 die Schaltfläche Online stellen Offline-Menüpunkt auf wampmanager.

Außerdem habe ich einige Änderungen an der PHP-Konfiguration vorgenommen, 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 anhand der verwendeten Parameter davon ausgehen, dass sie vorhanden ist irgendwo eine lange laufende Seite darin, und sie ist sehr schlecht geschrieben und wird nicht mit Fehlern ausgeführt, die im Browser angezeigt werden, ohne die Seite schrecklich durcheinander zu bringen. Glauben Sie mir, es gibt Websites wie diese, und die Leute wollen immer noch, dass sie dringend gewartet werden . Aber das bedeutet, dass wir diese Parameter nur für diese spezifische Site ändern müssen und nicht global für alle virtuellen Sites, die auf WampServer laufen.