Wie verbinde ich mich von einem anderen Computer im selben Netzwerk mit diesem lokalen Host?


171

Ich arbeite derzeit an einem Projekt und möchte es zu Hause auf zwei Laptops testen, wobei ein Laptop mit dem lokalen Host auf dem anderen verbunden ist. Ich benutze XAMPP. Wie mache ich das?

Antworten:


283

Das ist definitiv möglich. Wir werden hier einen allgemeinen Fall mit Apache behandeln.

Angenommen, Sie sind ein großer Symfony2-Fan und möchten http://symfony.local/von 4 verschiedenen Computern (dem Hauptcomputer, auf dem Ihre Website gehostet wird , sowie einem Mac, einer Windows- und einer Linux-Distribution (drahtlos oder nicht)) auf Ihre Symfony-Website zugreifen der Hauptcomputer.

Allgemeine Skizze:

Geben Sie hier die Bildbeschreibung ein


1 Richten Sie einen virtuellen Host ein :

Sie müssen zuerst einen virtuellen Host in Ihrer Apache- httpd-vhosts.confDatei einrichten . Auf XAMP finden Sie diese Datei hier : C:\xampp\apache\conf\extra\httpd-vhosts.conf. Auf MAMP finden Sie diese Datei hier : Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. Dieser Schritt bereitet den Webserver auf Ihrem Computer auf die Bearbeitung von symfony.localAnforderungen vor. Sie müssen den Namen des virtuellen Hosts sowie den Stamm- / Hauptordner Ihrer Website angeben. Fügen Sie dazu die folgende Zeile am Ende dieser Datei hinzu. Sie müssen das ändern DocumentRoot, wo sich Ihr Hauptordner befindet. Hier habe ich /Applications/MAMP/htdocs/Symfony/als Wurzel meiner Website genommen.

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>

2 Konfigurieren Sie Ihre Hosts-Datei :

Damit der Client (in diesem Fall Ihr Browser) versteht, was symfony.localwirklich bedeutet, müssen Sie die Hosts-Datei auf Ihrem Computer bearbeiten. Jedes Mal, wenn Sie eine URL in Ihren Browser eingeben, versucht Ihr Computer zu verstehen, was dies bedeutet! symfony.localbedeutet nichts für einen Computer. Es wird also versucht, den Namen symfony.localin eine IP-Adresse aufzulösen . Dazu wird zunächst in der Hosts-Datei auf Ihrem Computer überprüft, ob eine IP-Adresse mit der in die Adressleiste eingegebenen Adresse übereinstimmen kann. Wenn dies nicht möglich ist, werden DNS-Server gefragt . Der Trick hier besteht darin, Folgendes an Ihre Hosts-Datei anzuhängen.

  • Auf dem MAC befindet sich diese Datei in /private/etc/hosts;
  • Unter LINUX befindet sich diese Datei in /etc/hosts;
  • Unter WINDOWS befindet sich diese Datei in \Windows\system32\private\etc\hosts;
  • Unter WINDOWS 7 befindet sich diese Datei in \Windows\system32\drivers\etc\hosts;
  • Unter WINDOWS 10 befindet sich diese Datei in \Windows\system32\drivers\etc\hosts;

Hosts file

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1           symfony.local

Von nun an verwendet Ihr Computer jedes Mal, wenn Sie symfony.local auf diesem Computer eingeben, die Loopback-Schnittstelle, um eine Verbindung zu symfony.local herzustellen. Es wird verstanden, dass Sie an localhost (127.0.0.1) arbeiten möchten.

3 Zugriff symfony.localvon einem anderen Computer :

Wir kommen endlich zu Ihrer Hauptfrage:

Wie kann ich jetzt über einen anderen Computer auf meine Website zugreifen?

Nun, das ist jetzt einfach! Wir müssen nur den anderen Computern sagen, wie sie finden könnten symfony.local! Wie machen wir das?

3a Erhalten Sie die IP-Adresse des Computers, auf dem sich die Website befindet :

Wir müssen zuerst die IP-Adresse auf dem Computer kennen, auf dem sich die Website befindet (an der wir von Anfang an gearbeitet haben). Im Terminal bei MAC und LINUX Typ ifconfig |grep inetbei WINDOWSTyp ipconfig. Angenommen, die IP-Adresse dieses Computers lautet 192.168.1.5 .

3b Bearbeiten Sie die Hosts-Datei auf dem Computer, von dem aus Sie auf die Website zugreifen möchten. ::

Auch auf dem MAC befindet sich diese Datei in /private/etc/hosts; auf LINUX , in /etc/hosts; und unter WINDOWS in \Windows\system32\private\etc\hosts(wenn Sie WINDOWS 7 verwenden , befindet sich diese Datei in \Windows\system32\drivers\etc\hosts). Der Trick besteht nun darin, die IP-Adresse des Computers zu verwenden, auf den wir zugreifen / mit dem wir sprechen möchten:

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5         symfony.local

4 Schließlich genießen Sie die Ergebnisse in Ihrem Browser

Sie können jetzt in Ihren Browser gehen und eingeben http://symfony.local, um Ihre Website auf verschiedenen Computern wunderschön zu sehen! Beachten Sie, dass Sie dieselbe Strategie anwenden können, wenn Sie als OSX-Benutzer Ihre Website in Internet Explorer über Virtual Box testen (wenn Sie keinen Windows-Computer verwenden möchten). Dies wird in Erstellen Ihrer Windows / IE-Testumgebung unter OSX ausführlich erläutert .


Sie können auch von mobilen Geräten aus auf Ihren lokalen Host zugreifen

Möglicherweise fragen Sie sich, wie Sie von einem mobilen Gerät aus auf Ihre localhost-Website zugreifen können. In einigen Fällen können Sie die Hosts-Datei (iPhone, iPad ...) auf Ihrem Gerät nicht ändern (Jailbreaking ausgeschlossen).

Nun, die Lösung besteht dann darin, einen Proxyserver auf dem Computer zu installieren, auf dem sich die Website befindet, und von Ihrem iPhone aus eine Verbindung zu diesem Proxy herzustellen. Es wird in den folgenden Beiträgen sehr gut erklärt und ist nicht so lange einzurichten:

Auf einem Mac würde ich empfehlen: Testen einer Mac OS X-Website unter Verwendung eines lokalen Hostnamens auf einem mobilen Gerät : Verwenden von SquidMan als Proxy. Es ist eine 100% kostenlose Lösung. Einige Leute können Charles auch als Proxyserver verwenden, aber es kostet 50 $.

Unter Linux können Sie das oben beschriebene Mac OS anpassen, indem Sie Squid als Proxyserver verwenden.

Unter Windows können Sie dies mit Fiddler tun . Die Lösung wird im folgenden Beitrag beschrieben: Überwachen des iPhone-Verkehrs mit Fiddler


Edit 23/11/2017: Hey, ich möchte meine Hosts-Datei nicht ändern

@Dre. Gibt es eine Möglichkeit, von einem anderen Computer aus auf die Website zuzugreifen, indem Sie die Hostdatei nicht manuell bearbeiten? Angenommen, ich habe 100 Computer, die auf die Website zugreifen möchten

Dies ist eine interessante Frage, und da sie mit der OP-Frage zusammenhängt, möchte ich Ihnen helfen.

Sie müssten eine Änderung in Ihrem Netzwerk vornehmen, damit jeder Computer weiß, wo Ihre Website gehostet wird. Die meisten normalen Router tun dies nicht, sodass Sie Ihren eigenen DNS-Server in Ihrem Netzwerk ausführen müssen .

Stellen wir uns vor, Sie haben einen Router (192.168.1.1). Dieser Router verfügt über einen DHCP-Server und weist 100 Computern im Netzwerk IP-Adressen zu.

Angenommen, Sie haben wie oben im selben Netzwerk einen Computer, auf 192.168.1.5dem sich Ihre Website befindet. Wir werden diese Maschine nennen pompei.

$ echo $HOSTNAME
pompei

Wie vorher, dass Maschine pompeian 192.168.1.5läuft eine HTTP - Server , die Ihre Website dient symfony.local.

Damit jeder Computer weiß, auf dem symfony.localgehostet pompeiwird, benötigen wir jetzt einen benutzerdefinierten DNS-Server im Netzwerk, der weiß, wo symfony.localgehostet wird. Geräte im Netzwerk können dann Domänennamen auflösen, die pompeiintern bereitgestellt werden.

3 einfache Schritte.

Step 1: DNS Server

Richten Sie einen DNS-Server in Ihrem Netzwerk ein. Lassen Sie es uns der Einfachheit halber aktivierenpompei und etwas wie dnsmasq verwenden .

Dnsmasq bietet Domain Name System (DNS) Spediteur , ... .

Wir möchten pompeiDNSmasq ausführen, um DNS-Anfragen zu verarbeiten Hey, pompei, where is symfony.localund zu antworten Hey, sure think, it is on 192.168.1.5 but don't take my word for it.

Installieren Sie dnsmasq. Die Konfigurationsdatei von dnsmasq befindet sich normalerweise in /etc/dnsmasq.confAbhängigkeit von Ihrer Umgebung.

Ich persönlich benutze no-resolvund google Server server=8.8.8.8 server=8.8.8.4.

* Hinweis: * Starten Sie DNSmasq IMMER neu, wenn Sie die Datei / etc / hosts ändern, da sonst keine Änderungen wirksam werden.

Step 2: Firewall

Um zu arbeiten, pompeimüssen eingehende und ausgehende 'Domain'-Pakete zugelassen werden, die von und zu Port 53 gehen. Natürlich! Dies sind DNS-Pakete. Wenn pompeidies nicht zulässig ist, kann Ihr DNS-Server überhaupt nicht erreicht werden. Öffnen Sie den Port 53. Unter Linux würden Sie dies klassisch verwenden iptables.

Teilen Sie mir mit, was ich mir ausgedacht habe, aber Sie müssen höchstwahrscheinlich in Ihre Firewall eintauchen und alles gut verstehen.

#
# Allow outbound DNS port 53
#
 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
 iptables -A INPUT -p udp --dport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

 iptables -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -A INPUT -p tcp --sport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

Step 3: Router

Teilen Sie Ihrem Router mit, dass Ihr DNS-Server 192.168.1.5jetzt eingeschaltet ist. Meistens können Sie sich einfach bei Ihrem Router anmelden und dies ganz einfach manuell ändern.

Das war's. Wenn Sie sich auf einem Computer befinden und nachfragen symfony.local, wird Ihr DNS-Server gefragt, wo er symfony.localgehostet wird. Sobald er seine Antwort vom DNS-Server erhalten hat, wird die richtige HTTP-Anfrage an pompeion gesendet 192.168.1.5.

Ich lasse dich damit spielen und genieße die Fahrt. Diese beiden Schritte sind die wichtigsten Richtlinien. Sie müssen also einige Stunden debuggen und verbringen, wenn Sie dies zum ersten Mal tun. Lassen Sie uns sagen , dass dies eine erweiterte Netzwerk - Bit gibt es primäre DNS - Server, sekundären DNS - Server, usw. . Viel Glück!


Schöne Antwort. Ich folgte dem letzten Teil, bis ich zu "Überwachen des iPhone-Verkehrs mit Fiddler" kam. Es zeigt auf die Fiddler-Homepage. Dies sollte der Link sein: conceptdev.blogspot.com/2009/01/…
helpse

Ich habe die Hostdatei geändert, aber das Problem ist, dass auch ein IIS-Server ausgeführt wird, sodass mein "localhost" oder "127.0.0.1" auf den IIS-Server zeigt. Wie kann ich ihn durch einen xamp-Server ersetzen?
Uzair Ali

1
@Mick eine Möglichkeit, von einem anderen Computer auf die Website zuzugreifen, indem die hostDatei nicht manuell bearbeitet wird?
Nehmen

1
@Dre Ja, Sie müssten eine Änderung in Ihrem Netzwerk vornehmen, damit jeder Computer weiß, wo Ihre Website gehostet wird. Ich habe am Ende der Antwort Informationen hinzugefügt. Hoffentlich hilft das.
Mick

1
Hervorragende Erklärung!
Shepherd

25

Zum Testen auf beiden Laptops im selben WLAN und über das Internet können Sie einen Dienst wie http://localhost.run/ oder https://ngrok.com/ verwenden.


3
localhost.run arbeitete wie Charme. Mein Server lief auf Port 8000 und änderte gerade die Befehlszeile von 80 auf 8000.
Isuru

3
Beeindruckend! super ... es hat wirklich auf einmal funktioniert ... danke @tommyvn
Jabongg

Es ist viel einfacher, NGROK einzurichten, als die lokale Hosts-Datei zu aktualisieren. +1
BlackHatSamurai

Einfache Lösung für einen schnellen Test
Shamila

15

Vorausgesetzt, beide Computer befinden sich in derselben Arbeitsgruppe, öffnen Sie cmd.exeden Computer, zu dem Sie eine Verbindung herstellen möchten, ipconfigund geben Sie die IP-Adresse in der IPv4 AddressZeile ein.

Verwenden Sie dann auf dem Computer, mit dem Sie eine Verbindung herstellen möchten http:// + the IP of the target machine.

Das sollte es tun.


3
Dies würde funktionieren, wenn Port 80 der Port für die App ist (normalerweise), aber denken Sie daran, dass wir möglicherweise einen anderen Port verwenden. Das würde bedeuten, http: // + die IP des Zielcomputers + ": PORT_NUMBER"
ggderas

Dies war die einfache Lösung, nach der ich gesucht habe. @Codrin Eugeniu: Bitte denken Sie daran, den Vorschlag ": PORT_NUMBER" in Ihre Antwort aufzunehmen, wie von ggderas erwähnt. Für mich wurde dies benötigt, da ich über Port 8088 mit Apache Superset verbunden war.
Ohumeronen

8

Unter Mac OS X:

  1. Führen Sie im Terminal ifconfig | grep 192.die interne IP-Adresse Ihres Computers im aktuellen Netzwerk aus. Es kann so etwas wie sein192.168.1.140

  2. Starten Sie einen Server. node server.jsKann beispielsweise einen Server an einem Port starten.

  3. Besuchen Sie auf Ihrem Telefon 192.168.1.140:3000oder einen beliebigen Port, auf dem Ihr Server ausgeführt wird.


6

Dieses Tool hat mir viel gespart, da ich keine Administratorrechte auf meinem Computer habe und bereits nodejs installiert habe. Aus irgendeinem Grund gibt mir die Konfiguration in meinem Netzwerk keinen Zugriff auf andere Computer, die nur auf die IP im Browser zeigen.

# Using a local.dev vhost
$ browser-sync start --proxy

# Using a local.dev vhost with PORT
$ browser-sync start --proxy local.dev:8001

# Using a localhost address
$ browser-sync start --proxy localhost:8001

# Using a localhost address in a sub-dir
$ browser-sync start --proxy localhost:8080/site1

http://www.browsersync.io/docs/command-line/


Ich starte eine Webapp auf localhost: 3000. Ich habe browser-sync start --proxy localhost:3000in einer separaten Shell verwendet. Auf einem anderen Gerät, das mit dem Netzwerk verbunden ist, tippe ich: ${computerIP}:3000aber ich sehe nichts. Ich denke, ich sollte noch etwas mehr bereitstellen.
Ben Carp

5

Möglicherweise verhindern Ihre Firewalls, dass Sie auf den Webserver des lokalen Hosts zugreifen können.
Geben Sie bei Bedarf die IP-Adressen der Internet-Sicherheits-Antiviren-Netzwerksicherheit Ihrer Computer als sichere IP-Adressen ein.
So finden Sie die IP-Adresse Ihres Windows-PCs: Start> (Ausführen) Geben Sie Folgendes ein : cmd (Eingabe)
(Dies öffnet die Blackbox-Eingabeaufforderung)
Geben Sie ipconfig ein (Eingabe) Angenommen
, Ihr Apache- oder IIS-Webserver ist auf Ihrem PC installiert : 192.168.0.3
und Sie möchten mit Ihrem Laptop auf Ihren Webserver zugreifen. (Die IP-Adresse des Laptops lautet 192.168.0.5.)
Auf Ihrem PC geben Sie Folgendes ein: http: // localhost / in Ihrem Firefox- oder Internet Eplorer-Browser, um auf Ihre Daten auf Ihrem Webserver zuzugreifen.
Auf Ihrem Laptop geben Sie http://192.168.0.3/ ein, um auf Ihren Webserver auf Ihrem PC zuzugreifen.

Damit all diese Dinge funktionieren, müssen Sie einen Webserver korrekt installiert haben (z. B. IIS, Apache, XAMP, WAMP usw.).

Wenn dies nicht funktioniert, versuchen Sie, Ihren PC von Ihrem Laptop aus zu
pingen : Öffnen Sie den Befehl propmt auf Ihrem Laptop: Start> cmd (Enter)
ping 192.168.1.3 (Enter)
Wenn der Ping fehlschlägt, blockieren Firewalls Ihre Verbindung oder Ihr Netzwerk Verkabelung ist fehlerhaft. Starten Sie Ihr Modem oder Ihren Netzwerk-Switch und Ihre Computer neu.
Schließen Sie Programme wie Chat-Programme, die Ihre Ports verwenden.
Sie können auch eine andere Portnummer ausprobieren: http: 192.168.0.3: 80 oder http: 192.168.0.3: 81 oder eine beliebige Zufallszahl am Ende


1
Vielen Dank an @KarlosFontana - Sie haben auch gerade meine Frage beantwortet. Ich hatte Probleme, mein iPhone mit einem Server zu verbinden, den ich auf dem Desktop geschrieben habe. Das iPhone war mit dem WLAN meines PCs verbunden. Ihre letzte Zeile beantwortete meine Frage :-)
Tommy

4

Dies ist eine Randnotiz, wenn man von einem anderen Gerät aus immer noch nicht auf localhost zugreifen kann, nachdem man den obigen Schritt ausgeführt hat. Dies kann daran liegen, dass die Apache-Datei ports.conf so konfiguriert wurde, dass sie lokal (127.0.0.1) und nicht außerhalb bereitgestellt wird.

Überprüfen Sie Folgendes (für Ubuntu Apache2)

  $ cat /etc/apache2/ports.conf

Wenn Folgendes festgelegt ist,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

Ändern Sie dann den Standardwert

NameVirtualHost *:80  
Listen 80  

0

Wenn Sie unter Windows arbeiten, verwenden Sie ipconfig , um die lokale IPv4-Adresse abzurufen , und geben Sie diese in Ihrer Apache-Konfigurationsdatei an: httpd.conf , wie z.

Listen: 10.20.30.40:80

Starten Sie Ihren Apache-Server neu und testen Sie ihn von einem anderen Computer im Netzwerk.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.