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?
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:
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.
1 Richten Sie einen virtuellen Host ein :
Sie müssen zuerst einen virtuellen Host in Ihrer Apache- httpd-vhosts.conf
Datei 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.local
Anforderungen 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.local
wirklich 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.local
bedeutet nichts für einen Computer. Es wird also versucht, den Namen symfony.local
in 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.
/private/etc/hosts
;/etc/hosts
;\Windows\system32\private\etc\hosts
;\Windows\system32\drivers\etc\hosts
;\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.local
von 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 inet
bei WINDOWS
Typ 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 .
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
@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.5
dem sich Ihre Website befindet. Wir werden diese Maschine nennen pompei.
$ echo $HOSTNAME
pompei
Wie vorher, dass Maschine pompeian 192.168.1.5
läuft eine HTTP - Server , die Ihre Website dient symfony.local
.
Damit jeder Computer weiß, auf dem symfony.local
gehostet pompeiwird, benötigen wir jetzt einen benutzerdefinierten DNS-Server im Netzwerk, der weiß, wo symfony.local
gehostet wird. Geräte im Netzwerk können dann Domänennamen auflösen, die pompeiintern bereitgestellt werden.
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.local
und 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.conf
Abhängigkeit von Ihrer Umgebung.
Ich persönlich benutze no-resolv
und 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.5
jetzt 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.local
gehostet 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!
host
Datei nicht manuell bearbeitet wird?
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.
Vorausgesetzt, beide Computer befinden sich in derselben Arbeitsgruppe, öffnen Sie cmd.exe
den Computer, zu dem Sie eine Verbindung herstellen möchten, ipconfig
und geben Sie die IP-Adresse in der IPv4 Address
Zeile 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.
Unter Mac OS X:
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
Starten Sie einen Server. node server.js
Kann beispielsweise einen Server an einem Port starten.
Besuchen Sie auf Ihrem Telefon 192.168.1.140:3000
oder einen beliebigen Port, auf dem Ihr Server ausgeführt wird.
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
browser-sync start --proxy localhost:3000
in einer separaten Shell verwendet. Auf einem anderen Gerät, das mit dem Netzwerk verbunden ist, tippe ich: ${computerIP}:3000
aber ich sehe nichts. Ich denke, ich sollte noch etwas mehr bereitstellen.
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
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
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.