Bu yerel ana bilgisayara aynı ağdaki başka bir bilgisayardan nasıl bağlanırım?


172

Şu anda bir proje üzerinde çalışıyorum ve bir dizüstü bilgisayarın diğerinde localhost'a bağlandığı evdeki iki dizüstü bilgisayarda test etmek istiyorum. XAMPP kullanıyorum. Bunu nasıl yaparım?

Yanıtlar:


284

Bu kesinlikle mümkün. Burada Apache ile ilgili genel bir durumu ele alacağız.

Büyük bir Symfony2 hayranı olduğunuzu ve http://symfony.local/4 farklı bilgisayardan (web sitenizi barındıran ana bilgisayarın yanı sıra Mac, Windows ve bağlı bir Linux dağıtımından (kablosuz veya değil)) symfony web sitenize erişmek istediğinizi varsayalım ana bilgisayar.

Genel Çizim:

resim açıklamasını buraya girin


1 Sanal bir ana bilgisayar oluşturun :

Önce apache httpd-vhosts.confdosyanızda bir sanal ana bilgisayar kurmanız gerekir . On XAMP , buradan bu dosyayı bulabilirsiniz: C:\xampp\apache\conf\extra\httpd-vhosts.conf. On MAMP , buradan bu dosyayı bulabilirsiniz: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. Bu adım , bilgisayarınızdaki Web sunucusunu symfony.localistekleri işlemeye hazırlar . Sanal Ana Bilgisayar'ın adını ve web sitenizin kök / ana klasörünü sağlamanız gerekir. Bunu yapmak için, dosyanın sonuna aşağıdaki satırı ekleyin. DocumentRootAna klasörünüzün olduğu yeri olarak değiştirmeniz gerekir . Burada /Applications/MAMP/htdocs/Symfony/web sitemin kökü olarak aldım.

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

2 Ana makine dosyanızı yapılandırın :

İstemcinin (bu durumda tarayıcınızın) symfony.localgerçekten ne anlama geldiğini anlaması için bilgisayarınızdaki hosts dosyasını düzenlemeniz gerekir. Tarayıcınıza her URL yazışınızda, bilgisayarınız ne anlama geldiğini anlamaya çalışır! symfony.localbilgisayar için hiçbir şey ifade etmiyor. Böylece adı symfony.localbir IP adresine çözümlemeye çalışacaktır . Bunu, bir IP adresini adres çubuğuna yazdıklarınızla eşleştirip eşleştiremeyeceğini görmek için önce bilgisayarınızdaki hosts dosyasına bakarak yapar. Yapamazsa, DNS sunucularına sorar . Buradaki hile, ana makinenize aşağıdakileri eklemektir.

  • MAC üzerinde bu dosya /private/etc/hosts;
  • LINUX üzerinde bu dosya /etc/hosts;
  • WINDOWS üzerinde bu dosya \Windows\system32\private\etc\hosts;
  • On WINDOWS 7 , bu dosya içindedir \Windows\system32\drivers\etc\hosts;
  • On WINDOWS 10 , bu dosya içindedir \Windows\system32\drivers\etc\hosts;

Hosts file

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

Şu andan itibaren, bu bilgisayarda her symfony.local yazdığınızda, bilgisayarınız symfony.local'a bağlanmak için geri döngü arabirimini kullanacaktır. Localhost (127.0.0.1) üzerinde çalışmak istediğinizi anlayacaksınız.

3 symfony.localBaşka bir bilgisayardan erişim :

Sonunda şu ana sorunuza ulaşıyoruz:

Web siteme şimdi başka bir bilgisayardan nasıl erişebilirim?

Peki bu artık çok kolay! Diğer bilgisayarlara nasıl bulabileceklerini söylememiz yeterli symfony.local! Bunu nasıl yapabiliriz?

3a Web sitesini barındıran bilgisayarın IP adresini alın :

Öncelikle web sitesini barındıran bilgisayardaki IP adresini bilmemiz gerekir (en başından beri üzerinde çalıştığımız adres). Terminalde, MAC ve LINUX tipinde ifconfig |grep inet, WINDOWStipte ipconfig. Bu bilgisayarın IP adresinin 192.168.1.5 olduğunu varsayalım .

3b Web sitesine erişmeye çalıştığınız bilgisayardaki hosts dosyasını düzenleyin. :

Yine MAC üzerinde bu dosya /private/etc/hosts; ile LINUX , içinde /etc/hosts; ve WINDOWS üzerinde , \Windows\system32\private\etc\hosts( WINDOWS 7 kullanıyorsanız , bu dosya içeridedir\Windows\system32\drivers\etc\hosts ) .. Hile şimdi erişmeye / konuşmaya çalıştığımız bilgisayarın IP adresini kullanmaktır:

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

4 Son olarak tarayıcınızda sonuçların keyfini çıkarın

Artık tarayıcınıza gidip http://symfony.localweb sitenizi farklı bilgisayarlarda güzel görmek için yazabilirsiniz ! Web sitenizi Internet Explorer'da Sanal Kutu üzerinden test etmek için bir OSX kullanıcısıysanız (bir Windows bilgisayarı kullanmak istemiyorsanız) aynı stratejiyi uygulayabileceğinizi unutmayın. Bu güzel OSX üzerinde Windows / IE Test Ortamını Hazırlama bölümünde açıklanmaktadır .


Yerel ana makinenize mobil cihazlardan da erişebilirsiniz

Localhost web sitenize bir mobil cihazdan nasıl erişebileceğinizi merak edebilirsiniz. Bazı durumlarda, cihazınızdaki hosts dosyasını (iPhone, iPad ...) değiştiremezsiniz (jailbreak hariç).

Peki, çözüm daha sonra web sitesini barındıran makineye bir proxy sunucu yüklemek ve iphone'unuzdan bu proxy'ye bağlanmaktır. Aslında aşağıdaki yazılarda çok iyi açıklanmıştır ve kurulumu çok uzun değildir:

Mac bilgisayarlarda şunu öneriyorum: Mac OS X web sitesini mobil aygıtta yerel bir ana bilgisayar adı kullanarak test etme : SquidMan'ı proxy olarak kullanma . % 100 ücretsiz bir çözüm. Bazı insanlar Charles'ı proxy sunucusu olarak da kullanabilir , ancak 50 $.

Linux'ta, Squid'i proxy sunucusu olarak kullanarak Mac OS'yi yukarıdaki şekilde uyarlayabilirsiniz .

Windows'ta, bunu Fiddler kullanarak yapabilirsiniz . Çözüm aşağıdaki yayında açıklanmıştır: Fiddler ile iPhone trafiğini izleme


Edit 23/11/2017: Hey, Hosts dosyamı değiştirmek istemiyorum

@Dre. Ana makine dosyasını elle düzenlemeyerek başka bir bilgisayardan web sitesine erişmenin olası bir yolu var mı? diyelim ki web sitesine erişmek için 100 bilgisayarım var

Bu ilginç bir soru ve OP sorusuyla ilgili olduğu için yardım edeyim.

Her makinenin web sitenizin nerede barındırıldığını bilmesi için ağınızda bir değişiklik yapmanız gerekir. Çoğu günlük yönlendirici bunu yapmaz, bu nedenle ağınızda kendi DNS Sunucunuzu çalıştırmanız gerekir .

Bir yönlendiriciniz olduğunu varsayalım (192.168.1.1). Bu yönlendiricinin bir DHCP sunucusu vardır ve ağdaki 100 makineye IP adresleri tahsis eder.

Şimdi, yukarıdakiyle aynı şekilde, aynı ağda, 192.168.1.5web sitenizin bulunduğu bir makineniz olduğunu varsayalım. Biz buna makine diyeceğiz pompei.

$ echo $HOSTNAME
pompei

Daha önce olduğu gibi, pompeiadresindeki bu makine web sitenize hizmet veren 192.168.1.5bir HTTP Sunucusu çalıştırır symfony.local.

Her makinenin symfony.localbarındırıldığını bilmesi için pompeiartık ağda nerede symfony.localbarındırıldığını bilen özel bir DNS Sunucusuna ihtiyacımız olacak . Ağdaki cihazlar pompeidahili olarak sunulan alan adlarını çözebilir .

3 basit adım.

Step 1: DNS Server

Ağınızda bir DNS Sunucusu kurun. En üzerinde atalım pompeigibi kolaylık ve kullanım şey için dnsmasq .

Dnsmasq, Alan Adı Sistemi (DNS) iletici , ... sağlar .

pompeiDNS isteklerini işlemek Hey, pompei, where is symfony.localve yanıtlamak için DNSmasq çalıştırmak istiyoruz Hey, sure think, it is on 192.168.1.5 but don't take my word for it.

Devam edin dnsmasq'i kurun, dnsmasq yapılandırma dosyası genellikle /etc/dnsmasq.confortamınıza bağlıdır.

Ben şahsen no-resolvgoogle sunucuları kullanıyorum server=8.8.8.8 server=8.8.8.4.

* Not: * / etc / hosts dosyasında değişiklik yapılmadığı takdirde DAİMA DNSmasq'i yeniden başlatın, aksi takdirde değişiklik geçerli olmaz.

Step 2: Firewall

Çalışmak için, pompei53 numaralı bağlantı noktasına giden ve 53 numaralı bağlantı noktasına giden gelen ve giden 'etki alanı' paketlerine izin verilmesi gerekiyor. Bunlar DNS paketleridir ve pompeibunlara izin vermezse, DNS sunucunuza ulaşmanın bir yolu yoktur. Devam edin ve o bağlantı noktasını 53 açın. Linux'ta klasik olarak bunu kullanırsınız iptables.

Geldiklerimi paylaşmak, ancak büyük olasılıkla güvenlik duvarınıza dalmanız ve her şeyi iyi anlamanız gerekecektir.

#
# 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

Yönlendiricinize dns sunucunuzun açık olduğunu söyleyin 192.168.1.5. Çoğu zaman, yönlendiricinize giriş yapabilir ve bunu manuel olarak kolayca değiştirebilirsiniz.

Eğer bir makinede ve için sorduğunuzda Yani, bu kadar symfony.localsenin soracaktır, DNS Sunucususymfony.local barındırıldığı, ve en kısa DNS sunucusundan yanıt alamadığını söyledi, sonra uygun gönderecek HTTP isteği için pompeiüzerine 192.168.1.5.

Bununla oynamanıza ve sürüşün tadını çıkarmanıza izin verdim. Bu 2 adım ana yönergelerdir, bu nedenle ilk kez gerçekleştiriyorsanız hata ayıklamak ve birkaç saat harcamak zorunda kalacaksınız. Diyelim ki bu biraz daha gelişmiş bir ağ, birincil DNS Sunucusu, ikincil DNS Sunucuları, vb . İyi şanslar!


Güzel cevap. "Fiddler ile iPhone trafiğini izleme" ye gelene kadar son bölümü takip ettim. Fiddler ana sayfasına işaret ediyor. Bu bağlantı olmalıdır: conceptdev.blogspot.com/2009/01/…
yardım etmek

Ana bilgisayar dosyasını değiştirdim ancak sorun, "localhost" veya "127.0.0.1" in IIS sunucusuna işaret etmesi için IIS sunucumun da çalışıyor olması, xamp sunucusuyla nasıl değiştirebilirim?
Uzair Ali

1
@ hostDosyayı manuel olarak düzenlemeyerek başka bir bilgisayardan web sitesine erişmenin olası bir yolu var mı? Diyelim ki web sitesine erişmek için 100 bilgisayarım var
Drenyl

1
@Dre Evet, ağınızda bir değişiklik yapmanız gerekir, böylece her makine web sitenizin nerede barındırıldığını bilir. Cevabın sonuna bilgi ekledim. Umarım yardımcı olur.
Mick

1
Mükemmel açıklama!
Çoban

25

Aynı kablosuz ve internet üzerindeki her iki dizüstü bilgisayarda test etmek için http://localhost.run/ veya https://ngrok.com/ gibi bir hizmet kullanabilirsiniz.


3
localhost.run cazibe gibi çalıştı. Sunucum 8000 bağlantı noktasında çalışıyordu ve komut satırını 80'den 8000'e değiştirdi.
Isuru

3
Vaov! awsome ... gerçekten tek seferde çalıştı ... teşekkürler @tommyvn
Jabongg

NGROK'u ayarlamak, yerel hosts dosyasını güncellemekten daha kolaydır. +1
BlackHatSamurai

Hızlı test için kolay çözüm
shamila

15

Her iki makinenin de aynı çalışma grubunda olması koşuluyla, cmd.exebağlanmak istediğiniz makinede açın ipconfig, IP'yi IPv4 Addresssatırda yazın ve not edin .

Ardından, bağlanmak istediğiniz makinede kullanın http:// + the IP of the target machine.

Bunu yapmalı.


3
Bu, 80 numaralı bağlantı noktası uygulamanın (normalde) bağlantı noktasıysa çalışır, ancak farklı bir bağlantı noktası kullanıyor olabileceğimizi unutmayın. Bu http: // + hedef makinenin IP'si + ": PORT_NUMBER" anlamına gelir
ggderas

Aradığım basit çözüm buydu. @Codrin Eugeniu: Lütfen ": PORT_NUMBER" önerisini ggderas tarafından belirtildiği şekilde yanıtınıza dahil etmeyi düşünün. Apache Superset kullanarak 8088 numaralı bağlantı noktası üzerinden bağlandığımda bu benim için gerekliydi.
Ohumeronen

8

Mac OS X'te:

  1. Terminalde, ifconfig | grep 192.makinenizin dahili IP'sini mevcut ağına almak için çalıştırın . Gibi bir şey olabilir192.168.1.140

  2. Bir sunucu başlatın. Örneğin, node server.jsbazı bağlantı noktalarında bir sunucu başlatabilir.

  3. Telefonunuzda, 192.168.1.140:3000sunucunuzu ziyaret eden herhangi bir bağlantı noktasını ziyaret edin .


6

Makinemde Yönetici iznim olmadığından ve zaten nodejs yüklü olduğundan bu araç beni çok kurtardı. Herhangi bir nedenle ağımdaki yapılandırma, yalnızca tarayıcıda IP'yi işaret eden diğer makinelere erişim vermiyor.

# 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/


Localhost üzerinde bir web uygulaması çalıştırıyorum: 3000. Kullandığım browser-sync start --proxy localhost:3000ayrı kabuk. Ağa bağlı başka bir cihazda şunu yazıyorum: ${computerIP}:3000ama hiçbir şey görmüyorum. Sanırım daha fazla verebileceğim bir şey var.
Ben Carp

5

güvenlik duvarlarınız localhost'un web sunucusuna erişmenizi engelliyor olabilir.
Gerekirse, her iki bilgisayarınızın internet güvenliği antivirüs ağı güvenliğinin IP adreslerini güvenli IP adresleri olarak yerleştirin.
Windows PC'nizin IP adresini bulma: Başlat> (Çalıştır) yazın: cmd (Enter)
(Bu kara kutu komut istemini açar)
ipconfig (Enter) yazın
Diyelim ki Apache veya IIS web sunucunuz PC'nizde yüklü : 192.168.0.3
ve web sunucunuza dizüstü bilgisayarınızdan erişmek istiyorsunuz. (dizüstü bilgisayarın IP'si 192.168.0.5'dir) Dizüstü bilgisayarınızda PC'nizdeki web sunucunuza erişmek için http://192.168.0.3/ yazın. Tüm bu işler için doğru bir web sunucusu (ör. IIS, Apache, XAMP, WAMP vb.) Kurmuş olmanız gerekir.
PC'nizde web sunucunuzdaki verilerinize erişmek için Firefox veya Internet Eplorer tarayıcınızın içine http: // localhost / yazın.




Çalışmazsa, PC'nizi dizüstü bilgisayarınızdan pinglemeye çalışın: Dizüstü bilgisayarınızda komut istemini açın: Başlat> cmd (Enter)
ping 192.168.1.3 (Enter)
Ping başarısız olursa, güvenlik duvarları bağlantınızı veya ağınızı engelliyor kablolama arızalı. Modeminizi veya ağ anahtarınızı ve makinelerinizi yeniden başlatın.
Bağlantı noktalarınızı kullanan sohbet programları gibi programları kapatın.
Ayrıca farklı bir bağlantı noktası numarası da deneyebilirsiniz: http: 192.168.0.3: 80 veya http: 192.168.0.3: 81 veya sonunda herhangi bir rastgele sayı


1
Teşekkürler tou @KarlosFontana - sen de soruma cevap verdin. İPhone'umu masaüstünde yazdığım bir sunucuya bağlamakta sorun yaşıyordum. İPhone bilgisayarımın WiFi'sine bağlıydı. Son satırım sorumu yanıtladı :-)
Tommy

4

Yukarıdaki adımdan sonra başka bir cihazdan localhost'a hala erişilemiyorsa, bu bir yan nottur. Bunun nedeni, apache ports.conf dosyasının dışarıda değil yerel olarak sunulacak şekilde yapılandırılmış olması olabilir (127.0.0.1).

aşağıdakileri kontrol edin, (ubuntu apache2 için)

  $ cat /etc/apache2/ports.conf

aşağıdakiler ayarlanmışsa,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

sonra tekrar varsayılan değere değiştirin

NameVirtualHost *:80  
Listen 80  

0

Windows'daysanız, yerel IPv4 adresini almak için ipconfig komutunu kullanın ve ardından Apache yapılandırma dosyanızın altında belirtin: httpd.conf , gibi:

Listen: 10.20.30.40:80

Apache sunucunuzu yeniden başlatın ve ağdaki diğer bilgisayardan test edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.