ขณะนี้ฉันกำลังทำงานในโครงการและฉันต้องการทดสอบกับแล็ปท็อปสองเครื่องที่บ้านโดยที่แล็ปท็อปเครื่องหนึ่งเชื่อมต่อกับ localhost ที่อีกเครื่อง ฉันใช้ XAMPP ฉันจะทำสิ่งนี้ได้อย่างไร
ขณะนี้ฉันกำลังทำงานในโครงการและฉันต้องการทดสอบกับแล็ปท็อปสองเครื่องที่บ้านโดยที่แล็ปท็อปเครื่องหนึ่งเชื่อมต่อกับ localhost ที่อีกเครื่อง ฉันใช้ XAMPP ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
เป็นไปได้อย่างแน่นอน เราจะพิจารณากรณีทั่วไปกับ Apache ที่นี่
สมมติว่าคุณเป็นแฟน Symfony2 ขนาดใหญ่และคุณต้องการเข้าถึงเว็บไซต์ symfony ของคุณhttp://symfony.local/
จากคอมพิวเตอร์ 4 เครื่อง (เครื่องหลักที่โฮสต์เว็บไซต์ของคุณรวมถึง Mac, Windows และ Linux distro ที่เชื่อมต่อ (แบบไร้สายหรือไม่)) คอมพิวเตอร์หลัก
1 ตั้งค่าโฮสต์เสมือน :
คุณต้องตั้งค่าโฮสต์เสมือนในhttpd-vhosts.conf
ไฟล์apache ของคุณก่อน บนXAMPคุณสามารถค้นหาไฟล์นี้ได้ที่นี่: C:\xampp\apache\conf\extra\httpd-vhosts.conf
. บนMAMPคุณสามารถค้นหาไฟล์นี้ได้ที่นี่: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
. ขั้นตอนนี้เตรียมเว็บเซิร์ฟเวอร์บนคอมพิวเตอร์ของคุณเพื่อจัดการsymfony.local
คำขอ คุณต้องระบุชื่อโฮสต์เสมือนรวมถึงรูท / โฟลเดอร์หลักของเว็บไซต์ของคุณ เมื่อต้องการทำสิ่งนี้ให้เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์นั้น คุณต้องเปลี่ยนDocumentRoot
ไปทุกที่ในโฟลเดอร์หลักของคุณ ที่นี่ฉันได้/Applications/MAMP/htdocs/Symfony/
กลายเป็นรากของเว็บไซต์ของฉัน
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
ServerName symfony.local
</VirtualHost>
2 กำหนดค่าไฟล์โฮสต์ของคุณ :
เพื่อให้ไคลเอนต์ (เบราว์เซอร์ของคุณในกรณีนั้น) เข้าใจว่าsymfony.local
จริงๆแล้วคุณต้องแก้ไขไฟล์โฮสต์บนคอมพิวเตอร์ของคุณ ทุกครั้งที่คุณพิมพ์ URL ในเบราว์เซอร์คอมพิวเตอร์ของคุณจะพยายามเข้าใจความหมายของมัน! symfony.local
ไม่ได้มีความหมายอะไรกับคอมพิวเตอร์เลย ดังนั้นจะพยายามแก้ไขชื่อsymfony.local
เป็นที่อยู่ IP มันจะทำสิ่งนี้โดยการดูไฟล์โฮสต์ในคอมพิวเตอร์ของคุณก่อนเพื่อดูว่าเขาสามารถจับคู่ที่อยู่ IP กับสิ่งที่คุณพิมพ์ในแถบที่อยู่ได้หรือไม่ ถ้ามันไม่สามารถแล้วมันจะถามDNS เซิร์ฟเวอร์ เคล็ดลับที่นี่คือการผนวกสิ่งต่อไปนี้กับไฟล์โฮสต์ของคุณ
/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
จากนี้ไปทุกครั้งที่คุณพิมพ์ symfony.local บนคอมพิวเตอร์เครื่องนี้คอมพิวเตอร์ของคุณจะใช้อินเทอร์เฟซแบบวนรอบเพื่อเชื่อมต่อกับ symfony.local จะเข้าใจว่าคุณต้องการทำงานกับ localhost (127.0.0.1)
3 เข้าถึงsymfony.local
จากคอมพิวเตอร์เครื่องอื่น :
ในที่สุดเราก็มาถึงคำถามหลักของคุณซึ่งก็คือ:
ตอนนี้ฉันจะเข้าถึงเว็บไซต์ของฉันผ่านคอมพิวเตอร์เครื่องอื่นได้อย่างไร
ตอนนี้มันง่ายมาก! เราแค่ต้องบอกคอมพิวเตอร์เครื่องอื่นว่าพวกเขาสามารถหาsymfony.local
! เราจะทำเช่นนี้ได้อย่างไร?
3a รับที่อยู่ IP ของคอมพิวเตอร์ที่โฮสต์เว็บไซต์ :
ก่อนอื่นเราต้องรู้ที่อยู่ IP ในคอมพิวเตอร์ที่โฮสต์เว็บไซต์ (ที่อยู่ที่เราดำเนินการตั้งแต่เริ่มต้น) ใน terminal บนMACและLINUXประเภทifconfig |grep inet
ในประเภทWINDOWS
ipconfig
สมมติว่าที่อยู่ IP ของคอมพิวเตอร์นี้คือ192.168.1.5 192.168.1.5
3b แก้ไขไฟล์โฮสต์บนคอมพิวเตอร์ที่คุณพยายามเข้าถึงเว็บไซต์ :
อีกครั้งบนMACไฟล์นี้มีอยู่ใน/private/etc/hosts
; บนLINUXใน /etc/hosts
; และในWINDOWSใน\Windows\system32\private\etc\hosts
(หากคุณใช้WINDOWS 7ไฟล์นี้อยู่\Windows\system32\drivers\etc\hosts
) .. เคล็ดลับคือการใช้ที่อยู่ IP ของคอมพิวเตอร์ที่เราพยายามเข้าถึง / คุยกับ:
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5 symfony.local
4 ในที่สุดก็เพลิดเพลินไปกับผลลัพธ์ในเบราว์เซอร์ของคุณ
ตอนนี้คุณสามารถเข้าไปในเบราว์เซอร์และพิมพ์http://symfony.local
เพื่อดูเว็บไซต์ของคุณอย่างสวยงามบนคอมพิวเตอร์ที่แตกต่างกัน! โปรดทราบว่าคุณสามารถใช้กลยุทธ์เดียวกันนี้หากคุณเป็นผู้ใช้ OSX เพื่อทดสอบเว็บไซต์ของคุณบน Internet Explorer ผ่าน Virtual Box (หากคุณไม่ต้องการใช้คอมพิวเตอร์ Windows) นี้จะอธิบายได้อย่างสวยงามในงานหัตถกรรม IE ทดสอบของ Windows / สิ่งแวดล้อมของคุณใน OSX
คุณอาจสงสัยว่าจะเข้าถึงเว็บไซต์ localhost ของคุณจากอุปกรณ์มือถือได้อย่างไร ในบางกรณีคุณจะไม่สามารถแก้ไขไฟล์โฮสต์ (iPhone, iPad ... ) บนอุปกรณ์ของคุณ (ยกเว้นการแหกคุก)
วิธีแก้ปัญหาก็คือติดตั้งพร็อกซีเซิร์ฟเวอร์บนเครื่องที่โฮสต์เว็บไซต์และเชื่อมต่อกับพร็อกซีนั้นจาก iphone ของคุณ จริงๆแล้วมันอธิบายได้ดีมากในโพสต์ต่อไปนี้และไม่นานในการตั้งค่า:
สำหรับ Mac ฉันขอแนะนำ: การทดสอบเว็บไซต์ Mac OS X โดยใช้ชื่อโฮสต์ท้องถิ่นบนอุปกรณ์พกพา : การใช้SquidManเป็นพร็อกซี มันเป็นโซลูชั่นฟรี 100% บางคนสามารถใช้Charlesเป็นพร็อกซีเซิร์ฟเวอร์ได้ แต่จะมีค่าใช้จ่าย 50 ดอลลาร์
บน Linux คุณสามารถปรับวิธี Mac OS ด้านบนโดยใช้Squidเป็นพร็อกซีเซิร์ฟเวอร์
ใน Windows คุณสามารถทำเช่นนั้นโดยใช้ไวโอลิน วิธีการแก้ปัญหาที่อธิบายไว้ในโพสต์ต่อไปนี้: ตรวจสอบปริมาณการใช้ iPhone ด้วย Fiddler
@Dre วิธีใดที่เป็นไปได้ในการเข้าถึงเว็บไซต์จากคอมพิวเตอร์เครื่องอื่นโดยไม่แก้ไขไฟล์โฮสต์ด้วยตนเอง สมมติว่าฉันมีคอมพิวเตอร์ 100 เครื่องที่ต้องการเข้าถึงเว็บไซต์
นี่เป็นคำถามที่น่าสนใจและเนื่องจากเกี่ยวข้องกับคำถาม OP ให้ฉันช่วย
คุณจะต้องทำการเปลี่ยนแปลงในเครือข่ายของคุณเพื่อให้ทุกเครื่องทราบว่าเว็บไซต์ของคุณโฮสต์อยู่ที่ไหน เราเตอร์ส่วนใหญ่ในชีวิตประจำวันไม่ทำเช่นนั้นดังนั้นคุณจะต้องเรียกใช้เซิร์ฟเวอร์ DNSของคุณเองในเครือข่ายของคุณ
มาเสแสร้งว่าคุณมีเราเตอร์ (192.168.1.1) เราเตอร์นี้มีเซิร์ฟเวอร์ DHCP และจัดสรรที่อยู่ IP ให้กับ 100 เครื่องบนเครือข่าย
สมมติว่าคุณมีเครือข่ายเดียวกันซึ่งเป็นเครื่องที่192.168.1.5
มีเว็บไซต์ของคุณ เราจะโทรหาเครื่องpompeiนั้น
$ echo $HOSTNAME
pompei
เช่นเดียวกับก่อน, เครื่องที่pompeiที่192.168.1.5
วิ่งHTTP Serversymfony.local
ซึ่งให้บริการเว็บไซต์ของคุณ
เพื่อให้เครื่องทุกเครื่องทราบว่าsymfony.local
โฮสต์อยู่ในpompeiตอนนี้เราจะต้องมีเซิร์ฟเวอร์ DNS ที่กำหนดเองในเครือข่ายซึ่งรู้ว่าsymfony.local
โฮสต์อยู่ที่ไหน อุปกรณ์ในเครือข่ายจะสามารถแก้ไขชื่อโดเมนที่ให้บริการโดยpompeiภายใน
Step 1: DNS Server
ตั้งค่าเซิร์ฟเวอร์ DNS ในเครือข่ายของคุณ ลองมีไว้ในpompeiเพื่อความสะดวกและใช้สิ่งที่ต้องการdnsmasq
เราต้องการpompeiเรียกใช้ DNSmasq เพื่อจัดการคำขอ DNS Hey, pompei, where is symfony.local
และตอบกลับHey, sure think, it is on 192.168.1.5 but don't take my word for it
และการตอบสนอง
ไปข้างหน้าติดตั้ง dnsmasq โดยปกติไฟล์การกำหนดค่า dnsmasq /etc/dnsmasq.conf
ขึ้นอยู่กับสภาพแวดล้อมของคุณ
ผมเองใช้no-resolv
และ google server=8.8.8.8 server=8.8.8.4
เซิร์ฟเวอร์
* หมายเหตุ: *เริ่มต้น DNSmasq ใหม่เสมอหากแก้ไขไฟล์ / etc / hosts เนื่องจากไม่มีการเปลี่ยนแปลงใด ๆ
Step 2: Firewall
ในการทำงานpompeiจำเป็นต้องอนุญาตให้แพ็คเก็ต 'โดเมน' ที่เข้ามาและขาออกซึ่งกำลังเดินทางจากและไปยังพอร์ต 53 แน่นอน! นี่คือแพ็กเก็ต DNS และหากpompeiไม่อนุญาตให้ใช้จะไม่มีวิธีใดที่เซิร์ฟเวอร์ DNS ของคุณจะเข้าถึงได้ ไปข้างหน้าและเปิดพอร์ตที่ 53 บน linux คุณจะใช้แบบคลาสสิกiptables
สำหรับการนี้
แบ่งปันสิ่งที่ฉันคิดขึ้นมา แต่คุณจะต้องดำดิ่งลงสู่ไฟร์วอลล์ของคุณและเข้าใจทุกอย่างเป็นอย่างดี
#
# 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
บอกเราเตอร์ของคุณว่าเซิร์ฟเวอร์ dns ของคุณเปิดใช้งาน192.168.1.5
แล้ว ส่วนใหญ่คุณสามารถลงชื่อเข้าใช้เราเตอร์ของคุณและเปลี่ยนมันได้อย่างง่ายดาย
นั่นมันเมื่อคุณอยู่ในเครื่องและขอsymfony.local
ก็จะขอให้คุณเซิร์ฟเวอร์ DNSที่symfony.local
จะเป็นเจ้าภาพและเร็วที่สุดเท่าที่มันจะได้รับคำตอบจากเซิร์ฟเวอร์ DNS แล้วจะส่งที่เหมาะสมร้องขอ HTTPไปบนpompei192.168.1.5
ฉันปล่อยให้คุณเล่นกับสิ่งนี้และสนุกกับการนั่ง 2 ขั้นตอนเหล่านี้เป็นแนวทางหลักดังนั้นคุณจะต้องตรวจแก้จุดบกพร่องและใช้เวลาสองสามชั่วโมงถ้านี่เป็นครั้งแรกที่คุณทำ สมมติว่านี้เป็นบิตเครือข่ายขั้นสูงมากขึ้นมีเซิร์ฟเวอร์ DNS หลักเซิร์ฟเวอร์ DNS รอง, ฯลฯ โชคดี!
host
ไฟล์ด้วยตนเอง? สมมติว่าฉันมีคอมพิวเตอร์ 100 เครื่องที่ต้องการเข้าถึงเว็บไซต์
สำหรับการทดสอบกับแล็ปท็อปทั้งสองเครื่องบนเครือข่ายไร้สายเดียวกันและในอินเทอร์เน็ตคุณสามารถใช้บริการเช่นhttp://localhost.run/หรือhttps://ngrok.com/
ให้ทั้งสองเครื่องอยู่ในเวิร์กกรุ๊ปเดียวกันเปิดcmd.exe
บนเครื่องที่คุณต้องการเชื่อมต่อพิมพ์ipconfig
และจดบันทึก IP ที่IPv4 Address
บรรทัด
http:// + the IP of the target machine
จากนั้นบนเครื่องที่คุณต้องการเชื่อมต่อกับการใช้งาน
ที่ควรทำ
บน Mac OS X:
ในเทอร์มินัลให้รันifconfig | grep 192.
เพื่อรับ IP ภายในเครื่องของคุณในเครือข่ายปัจจุบัน มันอาจจะเป็นสิ่งที่ชอบ192.168.1.140
เริ่มเซิร์ฟเวอร์ ตัวอย่างเช่นnode server.js
อาจเริ่มเซิร์ฟเวอร์ในบางพอร์ต
บนโทรศัพท์ของคุณเยี่ยมชม192.168.1.140:3000
หรือพอร์ตใดก็ตามที่เซิร์ฟเวอร์ของคุณกำลังทำงาน
เครื่องมือนี้ช่วยฉันได้มากเนื่องจากฉันไม่มีสิทธิ์ผู้ดูแลระบบในเครื่องของฉันและติดตั้ง nodejs แล้ว ด้วยเหตุผลบางอย่างการกำหนดค่าบนเครือข่ายของฉันไม่อนุญาตให้ฉันเข้าถึงเครื่องอื่นเพียงแค่ชี้ IP บนเบราว์เซอร์
# 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
เปลือกแยกต่างหาก บนอุปกรณ์อื่นที่เชื่อมต่อกับเครือข่ายที่ฉันพิมพ์${computerIP}:3000
แต่ฉันไม่เห็นอะไรเลย ฉันเดาว่ามีอะไรอีกที่ฉันควรให้
อาจเป็นได้ว่าไฟร์วอลล์ของคุณป้องกันไม่ให้คุณเข้าถึงเว็บเซิร์ฟเวอร์ของ localhost
ใส่ที่อยู่ IP ของความปลอดภัยเครือข่ายป้องกันไวรัสทั้งสองของคอมพิวเตอร์ของคุณเป็น IP ที่ปลอดภัยหากจำเป็น
วิธีค้นหาที่อยู่ IP ของพีซี Windows ของคุณ: เริ่ม> พิมพ์ (เรียกใช้) ใน: cmd (Enter)
(เปิดพร้อมท์คำสั่งกล่องดำ)
พิมพ์ ipconfig (Enter)
สมมติว่า Apache หรือ IIS เว็บเซิร์ฟเวอร์ของคุณติดตั้งบนพีซีของคุณ : 192.168.0.3
และคุณต้องการเข้าถึงเว็บเซิร์ฟเวอร์ด้วยแล็ปท็อปของคุณ (IP ของแล็ปท็อปคือ 192.168.0.5)
บนแล็ปท็อปของคุณคุณพิมพ์ใน http://192.168.0.3/ เพื่อเข้าถึงเว็บเซิร์ฟเวอร์ของคุณบนพีซีของคุณ
เพื่อให้สิ่งเหล่านี้ทำงานคุณต้องติดตั้งเว็บเซิร์ฟเวอร์อย่างถูกต้อง (เช่น IIS, Apache, XAMP, WAMP เป็นต้น)
บนพีซีของคุณคุณพิมพ์ใน: http: // localhost / ภายในเบราว์เซอร์ Firefox หรือ Internet Eplorer ของคุณเพื่อเข้าถึงข้อมูลของคุณบนเว็บเซิร์ฟเวอร์ของคุณ
หากไม่ได้ผลให้ลอง ping พีซีจากแล็ปท็อปของคุณ:
เปิดคำสั่ง propmt บนแล็ปท็อปของคุณ: เริ่ม> cmd (Enter)
ping 192.168.1.3 (Enter)
หาก ping ล้มเหลวไฟร์วอลล์จะบล็อกการเชื่อมต่อหรือเครือข่ายของคุณ การเดินสายเคเบิลเป็นความผิดพลาด รีสตาร์ทโมเด็มหรือสวิตช์เครือข่ายและเครื่องของคุณ
ปิดโปรแกรมเช่นโปรแกรมแชทที่ใช้พอร์ตของคุณ
คุณยังสามารถลองหมายเลขพอร์ตที่แตกต่าง: http: 192.168.0.3: 80 หรือ http: 192.168.0.3: 81 หรือหมายเลขสุ่มใด ๆ ในตอนท้าย
นี่คือบันทึกด้านข้างหากยังไม่สามารถเข้าถึง localhost จากอุปกรณ์อื่นหลังจากทำตามขั้นตอนข้างต้น นี่อาจเป็นเพราะ apache ports.conf ได้รับการกำหนดค่าให้บริการในเครื่อง (127.0.0.1) และไม่ออกไปข้างนอก
ตรวจสอบสิ่งต่อไปนี้ (สำหรับ Ubuntu apache2)
$ cat /etc/apache2/ports.conf
หากมีการตั้งค่าต่อไปนี้
NameVirtualHost *:80
Listen 127.0.0.1:80
จากนั้นเปลี่ยนกลับเป็นค่าเริ่มต้น
NameVirtualHost *:80
Listen 80
หากคุณใช้ Windows ให้ใช้ipconfigเพื่อรับที่อยู่ IPv4 ในเครื่องจากนั้นระบุว่าภายใต้ไฟล์กำหนดค่า Apache ของคุณ: httpd.confเช่น:
Listen: 10.20.30.40:80
รีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณและทดสอบจากคอมพิวเตอร์เครื่องอื่นบนเครือข่าย