Ş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?
Ş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:
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.
1 Sanal bir ana bilgisayar oluşturun :
Önce apache httpd-vhosts.conf
dosyanı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.local
istekleri 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. DocumentRoot
Ana 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.local
gerç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.local
bilgisayar için hiçbir şey ifade etmiyor. Böylece adı symfony.local
bir 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.
/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
Ş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.local
Baş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
, WINDOWS
tipte 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.local
web 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 .
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
@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.5
web 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.5
bir HTTP Sunucusu çalıştırır symfony.local
.
Her makinenin symfony.local
barındırıldığını bilmesi için pompeiartık ağda nerede symfony.local
barındırıldığını bilen özel bir DNS Sunucusuna ihtiyacımız olacak . Ağdaki cihazlar pompeidahili olarak sunulan alan adlarını çözebilir .
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.local
ve 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.conf
ortamınıza bağlıdır.
Ben şahsen no-resolv
google 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.local
senin 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!
host
Dosyayı 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
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.
Her iki makinenin de aynı çalışma grubunda olması koşuluyla, cmd.exe
bağlanmak istediğiniz makinede açın ipconfig
, IP'yi IPv4 Address
satırda yazın ve not edin .
Ardından, bağlanmak istediğiniz makinede kullanın http:// + the IP of the target machine
.
Bunu yapmalı.
Mac OS X'te:
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
Bir sunucu başlatın. Örneğin, node server.js
bazı bağlantı noktalarında bir sunucu başlatabilir.
Telefonunuzda, 192.168.1.140:3000
sunucunuzu ziyaret eden herhangi bir bağlantı noktasını ziyaret edin .
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
browser-sync start --proxy localhost:3000
ayrı kabuk. Ağa bağlı başka bir cihazda şunu yazıyorum: ${computerIP}:3000
ama hiçbir şey görmüyorum. Sanırım daha fazla verebileceğim bir şey var.
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ı
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
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.