2012-06-28 4 views
23
  • Ich verwende Windows 7 mit Wamp 2.2-Server.
  • Ich habe 2 virtuelle Hosts eingerichtet: www.project1.com und www.project2.com.
  • Ich habe die „hosts“ geändert, die httpd.conf und die httpd-vhosts.conf Dateien, auf die Änderungen, die ich unten erwähnt.

Mit meinem Browser, wenn ich schreibe www.project1.com oder www.project2.com, erhalte ich erfolgreich meine Web-Seiten auf dem Laptop geöffnet, dass der Server auf installiert hat.Zugriff auf virtuellen Host von einem anderen Computer über LAN

Änderungen des "hosts-Datei": Ich habe die folgenden ein bis zum Ende der Datei angehängt: -

127.0.0.1  localhost 
127.0.0.1  www.project2.com 
127.0.0.1  www.project1.com 

Änderungen in der httpd.conf-Datei: -

Include conf/extra/httpd-vhosts.conf 

Änderungen in httpd-vhosts Datei: -

NameVirtualHost *:80 

<Directory "D:/websites/"> 
    AllowOverride All 
    Order Deny,Allow 
    Allow from all 
    </Directory> 
<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/wamp/www/" 
    ServerName localhost 
</VirtualHost> 


<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 


<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/project2/" 
    ServerName www.project2.com 
</VirtualHost> 


Jetzt; Da ich diese Webseiten über einen Browser in PC_1 öffnen kann (der mit dem Server), wie kann ich diese Webseiten über einen Browser in PC_2 aufrufen? (Ich meine, jeder PC, der über LAN mit PC_1 verbunden ist.)

+0

Ich bin neu zu all dem und habe ein paar Fragen mehr .. 1.Ist mein vorstehender Code geeignet für das, was ich erreichen möchte? @Gabriel - mit dem obigen Code und Ihrem Vorschlag, die Hosts-Datei eines anderen PC zu ändern, öffnet es die Wamp Standardseite beim Tippen www.project1.com – jatin3893

+0

Ja, es ist eine normale Möglichkeit, dies zu tun. Sie können auch mehrere ServerAlias-Optionen einrichten, wenn Sie dies zum Beispiel mit dynamischen DNS-Services kombinieren möchten. – dmp

+0

beziehen sich nur auf diesen Link http://stackoverflow.com/questions/2530418/wamp-server-multiple-virtual-hosts-are-not-working-on-windows/17850423#17850423 i antworten dafür ... –

Antwort

20

Ändern Sie in Ihrer Anweisung virtualhost 127.0.0.1 in *:80 und wie Gabriel erwähnt, fügen Sie einen Eintrag in der Datei hosts auf dem anderen Rechner hinzu und fügen Sie Ihre Domäne der IP Ihres Servers hinzu.

Wenn Sie eine explizite IP in die Direktive einfügen, wird Apache nur auf diese IP hören - aber die Wildcard wird sagen, dass sie an alle IPs bindet, die ihr zur Verfügung stehen.

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 

Wenn Ihr Server auf 192.168.1.70 beispielsweise, dann in den anderen Maschinen auf dem lan, wird die hosts-Eintrag wie folgt aussehen:

192.168.1.70  www.project1.com 

Starten Sie Apache und es sollte funktionieren.

Als Hinweis, wenn Sie virtualhosts verwenden, Apache wird die erste Definition als Standard für, wenn es keine Übereinstimmung zwischen der Domäne im HTTP-Header Anforderung und den Standorten in der Konfiguration, die konfiguriert werden kann Deshalb wurde Ihre Standardseite angezeigt.

Sie sagten Apache, an alle IPs mit der NameVirtualHost *:80 Direktive zu binden, aber dann keine Site für diese externe IP eingerichtet. Ich hoffe, das hilft!

+0

Wie können Sie es so einrichten, dass Sie ipaddress/virtualhostname von einem beliebigen LAN-Rechner aus verwenden können, ohne die Rechner der besuchenden Maschine zu bearbeiten? – dibs

+0

Was, wenn Sie das zum Beispiel von einem iPhone aus testen möchten? Gibt es einen anderen Weg als die Hosts-Datei zu ändern? – Victor

0

Sie müssen die Hosts-Datei auf dem Computer ändern, von dem Sie versuchen, die Seite anzuzeigen.

Also müssen Sie sie zur Hosts-Datei auf dem anderen LAN-Rechner hinzufügen.

+0

mit dem obigen code und ihrem vorschlag, die hosts-datei eines anderen pc zu ändern, öffnet sie die wamp-vorgabeseite beim eintippen von www.project1.com Wie mache ich es auf die Indexseite von www.project1 .com? – jatin3893

5

Im lokalen Netzwerk befinden sich zwei Computer.

Ein Computer (192.168.1.70) Einrichtung (D: \ wamp \ bin \ Apache \ Apache2.2.11 \ conf \ zusätzliche \ httpd-vhosts.conf):

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project2/" 
    ServerName www.project2.com 
</VirtualHost> 

B Computer Setup (C:/Windows/system32/Antriebe/etc/Hosts):

192.168.1.70 www.project1.com 
192.168.1.70 www.project2.com 

B Zugriff A, Mein Projekt funktioniert.

19

Zusätzlich zu der Antwort von danp können Sie auf den virtuellen Host zugreifen, ohne die Datei etc/hosts des Clientcomputers ändern zu müssen, indem Sie dem virtuellen Host einen Port zuweisen. Dies ist ideal, wenn Sie den Server mit einem mobilen oder Tablet-Gerät zugreifen möchten:

  1. bearbeiten Servers httpd.conf Datei auf:

    \wamp\bin\apache\apache2.2.x\conf\httpd.conf 
    

    Suche nach "Listen" (um Zeile 61). Sie sollten die folgende sehen, die 80 für den Port zu hören für Apache erlaubt:

    Listen 0.0.0.0:80 
    Listen [::0]:80 
    

    Fügen Sie die folgenden Zeilen für Port lauscht hinzufügen 81 (oder einen beliebigen Port):

    Listen 0.0.0.0:81 
    Listen [::0]:81 
    
  2. Bearbeiten Sie die httpd-vhosts.conf Datei an:

    \wamp\bin\apache\apache2.2.x\conf\extra\httpd-vhosts.conf 
    

    ändern "Virtual Host" Tag Port 81:

    <VirtualHost *:81> 
        DocumentRoot "D:/websites/project1/" 
        ServerName www.project1.com 
    </VirtualHost> 
    
  3. Starten Sie den Apache-Server neu.

  4. Auf der Client-Maschine/Tablette/Handy, auf dem Web-Browser des IP-Adresse (192.168.0.10, oder was auch immer IP), gefolgt von der Portnummer in folgendem Format des Servers eingeben:

    http://192.168.0.10:81 
    
+0

Perfect, ich würde nur hinzufügen, dass unter Windows müssen Sie möglicherweise den Port 81 für wamp (eingehende Regeln) in der Firewall öffnen –

+0

Ich bleibe auch mit Ports. Wenn es nur einen Weg gäbe, einen Windows-Rechner im lokalen LAN unter verschiedenen Hostnamen bekannt zu machen (entweder in einigen Router-DNS-Einstellungen oder anderswo), wäre das viel eleganter ... –

+1

Schöne Lösung für alle Geräte. Killerlösung :) Getestet und bewährt. Vielen Dank – ColinWa

2

Ein paar aktualisiertem Punkte für die gewählte Antwort zu berücksichtigen:

  1. NameVirtualHost wird nicht mehr nach Apache Version 2.3.11 und kann weggelassen werden.

    In 2.3.11 und später jederzeit eine IP-Adresse und Port-Kombination in mehreren virtuellen Hosts, namensbasierte virtuelle Hosting ist automatisch für diese Adresse aktiviert verwendet wird.

  2. Weil wir über Hosting einer Website über LAN sprechen, lassen Sie uns setzen eine Anforderung * nur Verbindungen akzeptieren von IP auf Ihrem lokalen Netzwerk adressiert. Auf einem normalen Linksys-Router ist die Standardadresse , die jedem Gerät im Netzwerk zugewiesen ist, zwischen 192.168.1.100 und 192.168.1.255.Sie können die Verbindung von allen Geräten im LAN mit einer IP-Adresse 192.168.1.XXX zulassen, indem Sie Require ip 192.168.1 verwenden (beachten Sie, dass das letzte Oktett von der IP-Adresse getrennt ist, um den gesamten Bereich zuzulassen).

    Damit können Sie den Zugriff pro Projekt konfigurieren, so dass eine über über LAN verfügbar ist und eine andere nur lokal verfügbar ist.

    # This will allow all LAN connections to www.project1.com 
    <VirtualHost *:80> 
        DocumentRoot "D:/websites/project1/" 
        <Directory "D:/websites/project1/"> 
         Require local 
         Require ip 192.168.1 
        </Directory> 
        ServerName www.project1.com 
    </VirtualHost> 
    
    # This will allow only the machine hosting the website to access www.project2.com 
    <VirtualHost *:80> 
        DocumentRoot "D:/websites/project2/" 
        <Directory "D:/websites/project2/"> 
         Require local 
        </Directory> 
        ServerName www.project2.com 
    </VirtualHost> 
    

    Während Ihre Website wird nicht öffentlich, ohne den Router Forwarding-Verkehr auf Port 80 an den Host bedient werden, glaube ich, diese beste Praxis betrachtet wird. Dies ist besonders wichtig, wenn Sie steuern müssen, welche Projekte für Geräte im LAN verfügbar sind.

  3. Zur Erinnerung: Ihr Host-Computer sollte so konfiguriert sein, dass er eine statische IP-Adresse verwendet, anstatt vom DHCP-Server Ihres Routers eine zugewiesen zu bekommen. Da wir bearbeiten die Hosts-Datei von anderen Geräten auf die IP des Servers, Wir wollen nicht, dass es zu ändern.

* ich dies einschließlich bin, weil es die lokale Entwicklung auf einem Zugangsbeschränkungen haben Server gemeinsam ist, und Sie werden speziell auf Ihrem lokalen Netzwerk zur Verfügung stellen müssen.