Obecnie pracuję nad projektem i chciałbym przetestować go na dwóch laptopach w domu, gdzie jeden laptop łączy się z lokalnym hostem na drugim. Używam XAMPP. Jak mam to zrobic?
Obecnie pracuję nad projektem i chciałbym przetestować go na dwóch laptopach w domu, gdzie jeden laptop łączy się z lokalnym hostem na drugim. Używam XAMPP. Jak mam to zrobic?
Odpowiedzi:
To zdecydowanie możliwe. Weźmiemy tutaj ogólny przypadek z Apache.
Powiedzmy, że jesteś wielkim fanem Symfony2 i chciałbyś mieć dostęp do swojej strony symfony http://symfony.local/
z 4 różnych komputerów (główny hostujący twoją stronę, a także Mac, Windows i dystrybucja Linuksa podłączona (bezprzewodowo lub nie) do główny komputer.
1 Skonfiguruj wirtualnego hosta :
Najpierw musisz skonfigurować wirtualnego hosta w httpd-vhosts.conf
pliku Apache . Na XAMP można znaleźć ten plik tutaj: C:\xampp\apache\conf\extra\httpd-vhosts.conf
. Na MAMP , można znaleźć ten plik tutaj: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
. Ten krok przygotowuje serwer sieci Web na komputerze do obsługi symfony.local
żądań. Musisz podać nazwę hosta wirtualnego, a także folder główny / główny witryny. Aby to zrobić, dodaj następujący wiersz na końcu tego pliku. Musisz zmienić miejsce, w DocumentRoot
którym znajduje się twój główny folder. Tutaj wziąłem /Applications/MAMP/htdocs/Symfony/
jako katalog główny mojej witryny.
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
ServerName symfony.local
</VirtualHost>
2 Skonfiguruj swój plik hosts :
Aby klient (w tym przypadku Twoja przeglądarka) zrozumiał, co symfony.local
tak naprawdę oznacza, musisz edytować plik hosts na swoim komputerze. Za każdym razem, gdy wpisujesz adres URL w przeglądarce, komputer próbuje zrozumieć, co to znaczy! symfony.local
nic nie znaczy dla komputera. Więc spróbuje przekształcić nazwę symfony.local
na adres IP. W tym celu najpierw zajrzy do pliku hosts na twoim komputerze, aby sprawdzić, czy może dopasować adres IP do tego, co wpisałeś w pasku adresu. Jeśli nie, to zapyta serwery DNS . Sztuczka polega na tym, aby dołączyć poniższe do pliku hosts.
/private/etc/hosts
formacie;/etc/hosts
;\Windows\system32\private\etc\hosts
formacie;\Windows\system32\drivers\etc\hosts
formacie;\Windows\system32\drivers\etc\hosts
formacie;Hosts file
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1 symfony.local
Od teraz za każdym razem, gdy napiszesz symfony.local na tym komputerze, twój komputer będzie używał interfejsu pętli zwrotnej do łączenia się z symfony.local. Zrozumie, że chcesz pracować na hoście lokalnym (127.0.0.1).
3 Dostęp symfony.local
z innego komputera :
W końcu dochodzimy do głównego pytania, które brzmi:
Jak mogę teraz uzyskać dostęp do mojej witryny internetowej z innego komputera?
Teraz jest to łatwe! Musimy tylko powiedzieć innym komputerom, w jaki sposób mogą znaleźć symfony.local
! Jak to robimy?
3a Uzyskaj adres IP komputera obsługującego witrynę :
Najpierw musimy znać adres IP na komputerze, na którym znajduje się strona internetowa (tym nad którym pracujemy od samego początku). W terminalu, na typach MAC i LINUXifconfig |grep inet
, na WINDOWS
typ ipconfig
. Załóżmy, że adres IP tego komputera to 192.168.1.5 .
3b Edytuj plik hosts na komputerze, z którego próbujesz uzyskać dostęp do witryny internetowej. :
Ponownie w systemie MAC ten plik znajduje się w /private/etc/hosts
; na LINUX , in /etc/hosts
; i na WINDOWS , w \Windows\system32\private\etc\hosts
(jeśli używasz WINDOWS 7 , ten plik jest w \Windows\system32\drivers\etc\hosts
) .. Sztuczka polega teraz na użyciu adresu IP komputera, do którego próbujemy uzyskać dostęp / rozmawiać:
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5 symfony.local
4 Wreszcie ciesz się wynikami w przeglądarce
Możesz teraz wejść do przeglądarki i pisać, http://symfony.local
aby pięknie zobaczyć swoją witrynę na różnych komputerach! Pamiętaj, że możesz zastosować tę samą strategię, jeśli jesteś użytkownikiem OSX, aby przetestować swoją witrynę internetową w Internet Explorerze za pośrednictwem Virtual Box (jeśli nie chcesz używać komputera z systemem Windows). Pięknie wyjaśniono to w artykule Tworzenie środowiska testowego Windows / IE na OSX .
Możesz się zastanawiać, jak uzyskać dostęp do witryny hosta lokalnego z urządzenia mobilnego. W niektórych przypadkach nie będziesz mógł modyfikować pliku hosts (iPhone, iPad ...) na swoim urządzeniu (z wyłączeniem jailbreakingu).
Cóż, rozwiązaniem jest wtedy zainstalowanie serwera proxy na komputerze obsługującym witrynę i połączenie się z tym serwerem proxy z iPhone'a. Właściwie jest to bardzo dobrze wyjaśnione w następujących postach i nie jest tak długo do skonfigurowania:
Na komputerze Mac polecam: Testowanie strony internetowej Mac OS X przy użyciu lokalnej nazwy hosta na urządzeniu mobilnym : Używanie SquidMan jako proxy. To w 100% darmowe rozwiązanie. Niektórzy ludzie mogą również używać Charlesa jako serwera proxy, ale kosztuje to 50 $.
W systemie Linux możesz dostosować system Mac OS powyżej, używając Squid jako serwera proxy.
W systemie Windows możesz to zrobić za pomocą programu Fiddler . Rozwiązanie opisano w poniższym poście: Monitorowanie ruchu iPhone'a za pomocą programu Fiddler
@Dre. Czy jest jakikolwiek sposób na uzyskanie dostępu do witryny z innego komputera bez ręcznej edycji pliku hosta? powiedzmy, że chciałem uzyskać dostęp do witryny internetowej 100 komputerów
To interesujące pytanie, a ponieważ jest związane z pytaniem PO, pomogę.
Musiałbyś dokonać zmiany w swojej sieci, aby każdy komputer wiedział, gdzie znajduje się Twoja witryna. Większość zwykłych routerów tego nie robi, więc musiałbyś uruchomić własny serwer DNS w swojej sieci.
Załóżmy, że masz router (192.168.1.1). Ten router ma serwer DHCP i przydziela adresy IP 100 komputerom w sieci.
Powiedzmy, że masz, tak samo jak powyżej, w tej samej sieci komputer, na 192.168.1.5
którym znajduje się Twoja witryna. Nazwiemy tę maszynę pompei.
$ echo $HOSTNAME
pompei
Tak samo jak przedtem, że maszyna pompeisię 192.168.1.5
uruchamia serwer HTTP , który służy swoją stronę symfony.local
.
Aby każda maszyna wiedziała, że symfony.local
jest hostowana pompei, będziemy teraz potrzebować niestandardowego serwera DNS w sieci, który wie, gdzie symfony.local
jest hostowany. Urządzenia w sieci będą wtedy mogły rozpoznawać nazwy domen obsługiwane pompeiwewnętrznie.
Step 1: DNS Server
Skonfiguruj serwer DNS w swojej sieci. Załóżmy to pompeidla wygody i użyj czegoś takiego jak dnsmasq .
Dnsmasq zapewnia Domain Name System (DNS) spedytora , ... .
Chcemy pompeiuruchomić DNSmasq do obsługi żądań DNS Hey, pompei, where is symfony.local
i odpowiadania Hey, sure think, it is on 192.168.1.5 but don't take my word for it
.
Śmiało zainstaluj dnsmasq, plik konfiguracyjny dnsmasq jest zwykle w /etc/dnsmasq.conf
zależności od twojego środowiska.
Osobiście korzystam z no-resolv
serwerów Google server=8.8.8.8 server=8.8.8.4
.
* Uwaga: * ZAWSZE restartuj DNSmasq, jeśli modyfikujesz plik / etc / hosts, ponieważ w przeciwnym razie żadne zmiany nie przyniosą efektu.
Step 2: Firewall
Aby działało, pompeimusi zezwolić na przychodzące i wychodzące pakiety „domeny”, które przechodzą z i do portu 53. Oczywiście! Są to pakiety DNS i jeśli pompeiich nie zezwalają, nie ma możliwości, aby w ogóle dotrzeć do serwera DNS. Śmiało, otwórz ten port 53. W Linuksie użyłbyś iptables
do tego klasycznie .
Dzielę się tym, co wymyśliłem, ale najprawdopodobniej będziesz musiał zagłębić się w zaporę ogniową i wszystko dobrze zrozumieć.
#
# 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
Powiedz routerowi, że serwer DNS jest 192.168.1.5
teraz włączony . W większości przypadków wystarczy zalogować się do routera i bardzo łatwo zmienić to ręcznie.
To wszystko, kiedy jesteś na komputerze i poprosisz o symfony.local
to, zapyta serwer DNS, gdzie symfony.local
jest hostowany, a gdy tylko otrzyma odpowiedź z serwera DNS, wyśle odpowiednie żądanie HTTP do pompeiwłączenia 192.168.1.5
.
Pozwoliłem ci się tym bawić i cieszyć się jazdą. Te 2 kroki to główne wytyczne, więc jeśli robisz to po raz pierwszy, będziesz musiał debugować i spędzić kilka godzin. Powiedzmy, że jest to nieco bardziej zaawansowana sieć, istnieje podstawowy serwer DNS, pomocniczy serwer DNS itp . Powodzenia!
host
ręcznej edycji pliku? powiedzmy, że chciałem uzyskać dostęp do strony internetowej 100 komputerów
Do testowania na obu laptopach w tej samej sieci bezprzewodowej i przez Internet możesz użyć usługi takiej jak http://localhost.run/ lub https://ngrok.com/
Pod warunkiem, że oba komputery znajdują się w tej samej grupie roboczej, otwórz cmd.exe
na komputerze, z którym chcesz się połączyć, wpisz ipconfig
i zanotuj adres IP na IPv4 Address
linii.
Następnie na komputerze, z którym chcesz się połączyć, użyj http:// + the IP of the target machine
.
Że należy to zrobić.
W systemie Mac OS X:
W terminalu uruchom, ifconfig | grep 192.
aby uzyskać wewnętrzny adres IP komputera w bieżącej sieci. To może być coś takiego192.168.1.140
Uruchom serwer. Na przykład node server.js
może uruchomić serwer na jakimś porcie.
W telefonie odwiedź 192.168.1.140:3000
lub wybierz dowolny port, na którym działa serwer.
To narzędzie bardzo mnie uratowało, ponieważ nie mam uprawnień administratora na moim komputerze i mam już zainstalowany nodejs. Z jakiegoś powodu konfiguracja w mojej sieci nie daje mi dostępu do innych maszyn po prostu wskazując adres IP w przeglądarce.
# 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
w osobnej powłoce. Na innym urządzeniu podłączonym do sieci piszę: ${computerIP}:3000
ale nic nie widzę. Myślę, że powinienem zapewnić coś więcej.
może być tak, że zapory sieciowe uniemożliwiają dostęp do serwera WWW lokalnego hosta.
W razie potrzeby umieść adresy IP obu zabezpieczeń sieci antywirusowej zabezpieczeń internetowych jako bezpieczne adresy IP.
Jak znaleźć adres IP komputera z systemem Windows: Start> (Uruchom) wpisz: cmd (Enter)
(spowoduje to otwarcie wiersza poleceń w czarnej skrzynce)
wpisz ipconfig (Enter)
Powiedzmy, że Twój serwer WWW Apache lub IIS jest zainstalowany na twoim komputerze : 192.168.0.3
i chcesz mieć dostęp do swojego serwera WWW za pomocą laptopa. (IP laptopa to 192.168.0.5)
Na komputerze wpisujesz: http: // localhost / w przeglądarce Firefox lub Internet Eplorer, aby uzyskać dostęp do danych na serwerze sieciowym.
Na swoim laptopie wpisujesz http://192.168.0.3/, aby uzyskać dostęp do serwera internetowego na komputerze.
Aby wszystkie te rzeczy działały, musisz poprawnie zainstalować serwer sieciowy (np. IIS, Apache, XAMP, WAMP itp.).
Jeśli to nie zadziała, spróbuj
pingować swój komputer z laptopa: Otwórz polecenie propmt na swoim laptopie: Start> cmd (Enter)
ping 192.168.1.3 (Enter)
Jeśli pingowanie nie powiedzie się, oznacza to, że zapory sieciowe blokują połączenie lub sieć okablowanie jest uszkodzone. Uruchom ponownie modem lub przełącznik sieciowy i swoje komputery.
Zamknij programy, takie jak programy do rozmów, które używają twoich portów.
Możesz również wypróbować inny numer portu: http: 192.168.0.3: 80 lub http: 192.168.0.3: 81 lub dowolny numer losowy na końcu
Jest to dodatkowa uwaga, jeśli po wykonaniu powyższego kroku nadal nie można uzyskać dostępu do hosta lokalnego z innych urządzeń. Może to być spowodowane tym, że apache ports.conf został skonfigurowany do obsługi lokalnie (127.0.0.1), a nie na zewnątrz.
sprawdź następujące kwestie (dla ubuntu apache2)
$ cat /etc/apache2/ports.conf
jeśli ustawiono poniższe,
NameVirtualHost *:80
Listen 127.0.0.1:80
następnie zmień go z powrotem na wartość domyślną
NameVirtualHost *:80
Listen 80
Jeśli korzystasz z systemu Windows, użyj ipconfig, aby uzyskać lokalny adres IPv4, a następnie określ go w pliku konfiguracyjnym Apache: httpd.conf , na przykład:
Listen: 10.20.30.40:80
Uruchom ponownie serwer Apache i przetestuj go z innego komputera w sieci.