Ich arbeite gerade an einem Projekt und würde es gerne zu Hause auf zwei Laptops testen, von denen ein Laptop mit dem localhost verbunden ist. Ich verwende XAMPP. Wie mache ich das?
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 von 4 verschiedenen Computern (dem Hauptcomputer, auf dem Ihre Website gehostet wird, sowie von einem Mac, einer Windows- und einer Linux-Distribution aus (drahtlos oder nicht) auf Ihre Symfony-Website unter http://symfony.local/
zugreifen. zum Hauptcomputer.
1 Virtuellen Host einrichten:
Sie müssen zuerst einen virtuellen Host in Ihrer Apache-Datei httpd-vhosts.conf
einrichten. Am XAMP finden Sie diese Datei hier: C:\xampp\Apache\conf\extra\httpd-vhosts.conf
. Am MAMP finden Sie diese Datei hier: Applications/MAMP/conf/Apache/extra/httpd-vhosts.conf
. Dieser Schritt bereitet den Webserver auf Ihrem Computer für die Verarbeitung 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 DocumentRoot
an die Position ändern, an der sich Ihr Hauptordner befindet. Hier habe ich /Applications/MAMP/htdocs/Symfony/
als Stammverzeichnis meiner Website verwendet.
<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
hat für einen Computer keine Bedeutung. Daher wird versucht, den Namen symfony.local
in eine IP-Adresse aufzulösen. Dies geschieht, indem zunächst in der Hosts-Datei auf Ihrem Computer geprüft wird, ob er eine IP-Adresse mit der in der Adressleiste eingegebenen übereinstimmt. Wenn dies nicht möglich ist, wird nach 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 bei jeder Eingabe von symfony.local auf diesem Computer die Loopback-Schnittstelle, um eine Verbindung zu symfony.local herzustellen. Es versteht sich, dass Sie auf localhost (127.0.0.1) arbeiten möchten.
3 Von einem anderen Computer auf symfony.local
zugreifen:
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 mitteilen, wie sie symfony.local
finden konnten! Wie machen wir das?
3a IP-Adresse des Computers abrufen, auf dem sich die Website befindet:
Wir müssen zuerst die IP-Adresse des Computers kennen, auf dem sich die Website befindet (an der wir von Anfang an gearbeitet haben). Geben Sie im Terminal unter MAC und LINUXifconfig |grep inet
und unter WINDOWS
ipconfig
ein. 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.:
Wiederum befindet sich diese Datei auf MAC in /private/etc/hosts
; on LINUX, in /etc/hosts
; und unter WINDOWS in \Windows\system32\private\etc\hosts
(wenn Sie WINDOWS 7 , diese Datei befindet sich 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 Genießen Sie endlich die Ergebnisse in Ihrem Browser
Sie können jetzt in Ihren Browser gehen und http://symfony.local
eingeben, um Ihre Website auf verschiedenen Computern zu sehen! Beachten Sie, dass Sie dieselbe Strategie anwenden können, wenn Sie OSX-Benutzer sind und Ihre Website in Internet Explorer über Virtual Box testen (wenn Sie keinen Windows-Computer verwenden möchten). Dies wird in Erstellen der Windows/IE-Testumgebung unter OSX sehr schön erklärt.
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 (Jailbreak ausgeschlossen).
Die Lösung besteht dann darin, einen Proxy-Server auf dem Computer zu installieren, auf dem sich die Website befindet, und über Ihr iPhone eine Verbindung zu diesem Proxy herzustellen. Es wird in den folgenden Beiträgen sehr gut erklärt und ist nicht so lang 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 auch Charles als Proxy-Server verwenden, aber es sind 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 ist im folgenden Beitrag beschrieben: Überwachung des iPhone-Verkehrs mit Fiddler
@Dre. Gibt es eine Möglichkeit, von einem anderen Computer aus auf die Website zuzugreifen, indem die Host-Datei nicht manuell bearbeitet wird? Nehmen wir an, ich habe 100 Computer, die auf die Website zugreifen wollten
Dies ist eine interessante Frage, und da sie mit der OP-Frage zusammenhängt, lassen Sie mich helfen.
Sie müssten eine Änderung in Ihrem Netzwerk vornehmen, damit jeder Computer weiß, wo Ihre Website gehostet wird. Die meisten gewöhnlichen Router tun das nicht Sie müssten also Ihren eigenen DNS-Server in Ihrem Netzwerk betreiben.
Angenommen, 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 unter 192.168.1.5
, auf dem sich Ihre Website befindet. Wir werden diese Maschine anrufen pompei.
$ echo $HOSTNAME
pompei
Das gleiche wie zuvor, diese Maschine pompei Bei 192.168.1.5
wird ein HTTP-Server ausgeführt, der Ihrer Website symfony.local
dient.
Damit jeder Computer weiß, dass auf symfony.local
gehostet wird pompei Wir benötigen nun 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 von bereitgestellt werden pompei im Inneren.
Step 1: DNS Server
Richten Sie einen DNS-Server in Ihrem Netzwerk ein. Lass es uns machen pompei für die Bequemlichkeit und verwenden Sie etwas wie dnsmasq .
Dnsmasq bietet Domain Name System (DNS) Weiterleitung, ... .
Wir wollen pompei DNSmasq ausführen, um DNS-Anforderungen zu verarbeiten Hey, pompei, where is symfony.local
und Hey, sure think, it is on 192.168.1.5 but don't take my Word for it
zu antworten.
Installieren Sie jetzt dnsmasq. Die dnsmasq-Konfigurationsdatei befindet sich in der Regel in /etc/dnsmasq.conf
(abhängig 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
Arbeiten, pompei muss eingehende und ausgehende 'Domain'-Pakete zulassen, die von und zu Port 53 gehen. Natürlich! Dies sind DNS-Pakete und wenn pompei erlaubt sie nicht, es gibt keine Möglichkeit, dass Ihr DNS-Server überhaupt erreicht wird. Öffnen Sie den Port 53. Unter Linux verwenden Sie hierfür klassisch iptables
NAME _ .
Teilen, was ich mir ausgedacht habe, aber Sie werden sehr wahrscheinlich in Ihre Firewall eintauchen und alles gut verstehen müssen.
#
# 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 sich Ihr DNS-Server jetzt in 192.168.1.5
befindet. Meistens können Sie sich einfach in Ihren Router einloggen und dies ganz einfach manuell ändern.
Das war's. Wenn Sie auf einem Computer nach symfony.local
fragen, wird Ihr DNS-Server gefragt, wo symfony.local
gehostet wird, und sobald er seine Antwort vom DNS-Server erhalten hat, wird der gesendet richtiges HTTP request to pompei am 192.168.1.5
.
Ich lasse dich damit spielen und genieße die Fahrt. Diese beiden Schritte sind die wichtigsten Richtlinien. Wenn Sie dies zum ersten Mal tun, müssen Sie einige Stunden debuggen und verbringen. Nehmen wir an, dies ist ein bisschen fortgeschrittener Netzwerkbetrieb, es gibt primäre DNS-Server, sekundäre DNS-Server, etc. . Viel Glück!
Zum Testen auf beiden Laptops auf demselben WLAN und im Internet können Sie einen Dienst wie http://localhost.run/ oder https://ngrok.com/
Wenn sich beide Maschinen in derselben Arbeitsgruppe befinden, öffnen Sie cmd.exe
auf der Maschine, zu der Sie eine Verbindung herstellen möchten, geben Sie ipconfig
ein, und notieren Sie die IP-Adresse in der Zeile IPv4 Address
.
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.
aus, um die interne IP-Adresse Ihres Computers im aktuellen Netzwerk abzurufen. Es könnte so etwas wie 192.168.1.140
sein
Starten Sie einen Server. Beispielsweise kann node server.js
einen Server an einem Port starten.
Besuchen Sie auf Ihrem Telefon 192.168.1.140:3000
oder auf welchem Port Ihr Server gerade läuft.
Dieses Tool hat mich viel gespart, da ich keine Administratorrechte auf meinem Rechner habe und bereits nodejs installiert habe. Aus irgendeinem Grund gibt mir die Konfiguration in meinem Netzwerk keinen Zugriff auf andere Computer, die nur die IP-Adresse des Browsers 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
es kann sein, dass Ihre Firewalls Sie daran hindern, auf den Webserver des localhost zuzugreifen.
Geben Sie die IP-Adressen der Antivirus-Netzwerksicherheit Ihres Computers für die Sicherheit Ihrer beiden Computer als sichere IP-Adressen ein, falls erforderlich.
So finden Sie die IP-Adresse Ihres Windows-PCs: Start> (Ausführen) Geben Sie Folgendes ein: cmd (Eingabe)
(Dies öffnet den Blackbox-Befehl "Eingabeaufforderung").
Geben Sie ipconfig (Enter) ein.
Nehmen wir an, 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 des Laptops ist 192.168.0.5)
Geben Sie auf Ihrem PC Folgendes ein: http: // localhost/in Ihrem Firefox- oder Internet-Eplorer-Browser, um auf Ihre Daten auf Ihrem Webserver zuzugreifen.
Geben Sie auf Ihrem Laptop http://192.168.0.3/ ein, um auf Ihren Webserver auf Ihrem PC zuzugreifen.
Damit all diese Dinge funktionieren, müssen Sie einen Webserver ordnungsgemäß installiert haben (z. B. IIS, Apache, XAMP, WAMP usw.).
Wenn dies nicht funktioniert, versuchen Sie, Ihren PC von Ihrem Laptop aus anzupingen:
Öffnen Sie den Befehl propmt auf Ihrem Laptop: Start> cmd (Enter)
ping 192.168.1.3 (Eingeben)
Wenn der Ping-Befehl fehlschlägt, blockieren Firewalls die Verbindung oder die Netzwerkverkabelung ist fehlerhaft. Starten Sie Ihr Modem oder Ihren Netzwerk-Switch und Ihre Maschinen neu.
.__ Schließen Sie Programme wie Chat-Programme, die Ihre Ports verwenden.
Sie können auch eine andere Portnummer versuchen: Http: 192.168.0.3: 80 oder http: 192.168.0.3: 81 oder eine beliebige Zufallszahl am Ende
Dies ist eine Randnotiz, wenn nach dem Durchführen des obigen Schrittes noch immer kein lokaler Host von einem anderen Gerät aus erreichbar ist. Dies kann daran liegen, dass der Apache ports.conf so konfiguriert wurde, dass er lokal (127.0.0.1) und nicht außerhalb bedient wird.
folgendes prüfen (für Ubuntu Apache2)
$ cat /etc/Apache2/ports.conf
wenn das Folgende eingestellt ist,
NameVirtualHost *:80
Listen 127.0.0.1:80
Ändern Sie dann den Standardwert
NameVirtualHost *:80
Listen 80
Wenn Sie mit Windows arbeiten, verwenden Sie ipconfig , um die lokale IPv4-Adresse abzurufen, und geben Sie diese unter Ihrer Apache-Konfigurationsdatei an: httpd.conf
Listen: 10.20.30.40:80
Starten Sie Ihren Apache-Server neu und testen Sie ihn von einem anderen Computer im Netzwerk.