ที่นี่มีส่วนประกอบแยกต่างหากอย่างน้อยสามชิ้นซึ่งแต่ละองค์ประกอบจำเป็นต้องกำหนดค่าอย่างถูกต้อง
ที่อยู่ผูกพันทางรถไฟ
เมื่อ Rails (หรือแอปพลิเคชันเซิร์ฟเวอร์อื่น) เปิดขึ้นเพื่อรับการเชื่อมต่อเครือข่ายมันจะผูกกับทั้ง IP และพอร์ต หากคำขอขาเข้าไม่ตรงกับทั้งสองข้อคำขอนั้นจะไม่ยอมรับการเชื่อมต่อ จากrails server --help
:
Usage: rails server [mongrel, thin etc] [options]
-p, --port=port Runs Rails on the specified port.
Default: 3000
-b, --binding=IP Binds Rails to the specified IP.
Default: localhost
...
ดังนั้นโดยค่าเริ่มต้น Rails จะยอมรับเฉพาะคำขอที่ส่งไปยังlocalhost
อะแดปเตอร์เครือข่าย (loopback) (เรียกว่าlo
) เนื่องจากอแด็ปเตอร์นี้สามารถเข้าถึงได้จากภายในคอมพิวเตอร์เครื่องเดียวกันเท่านั้นคำขอที่จะยอมรับจะมาจากภายใน Debian VM เอง: ดีและปลอดภัยสำหรับการทดสอบ แต่ไม่มีประโยชน์สำหรับการผลิตหรือแม้แต่การทดสอบจากคอมพิวเตอร์เครื่องอื่น
หากคุณต้องการให้ Rails ของคุณสามารถเข้าถึงได้จากคอมพิวเตอร์เครื่องอื่น (รวมถึงโฮสต์ Windows 7 ของคุณ) คุณจะต้องบอก Rails ให้ผูกกับที่อยู่ IP ใดก็ตาม Debian นั้นสามารถเข้าถึงได้จากภายนอก (ดูด้านล่าง)
แต่เป็นวิธีที่ง่ายคือการบอกทางรถไฟเชื่อมโยงกับที่อยู่ IP พิเศษ0.0.0.0
ซึ่งหมายความว่าอะแดปเตอร์เครือข่ายใด ๆ ดังนั้นการเริ่มต้นเซิร์ฟเวอร์ Rails ของคุณเช่น:
rails server -p 80 -b 0.0.0.0
จะทำให้ทุกคนในเว็บไซต์ของคุณสามารถเข้าถึง VM ของคุณบนเครือข่ายได้
นี่เป็นสิ่งที่ทำให้คุณสับสนแม้ว่าคุณจะมีอีกสององค์ประกอบที่ทำงานอยู่
ที่อยู่ IP ของ VM
คุณต้องชี้เบราว์เซอร์ของคุณไปที่เครื่องเสมือน Debian ซึ่งเป็นคอมพิวเตอร์แยกต่างหาก
กฎง่ายๆlocalhost
ก็คือมันมักจะอ้างถึงคอมพิวเตอร์เครื่องเดียวกัน อย่างไรก็ตามสำหรับจุดประสงค์ด้านเครือข่าย Debian VM ของคุณเป็นคอมพิวเตอร์แยกต่างหาก หากคุณใช้เว็บเบราว์เซอร์ในโฮสต์ Windows 7 ของคุณlocalhost
จะอ้างถึง Windows 7 ของคุณเสมอและไม่มีอะไรอื่น
คุณมีสองตัวเลือกที่นี่:
ตั้งค่าอะแดปเตอร์ VirtualBox VM เป็นโหมด Bridge (ตามที่คุณกล่าวถึงในคำถามของคุณ) สิ่งนี้จะทำให้ Debian ของคุณโดยตรงบนเครือข่ายภายนอก / home / work เดียวกันกับโฮสต์ Windows 7 ของคุณ จากนั้นคุณสามารถตรวจสอบ IP Debian VM ifconfig
ของคุณโดยการทำงาน มองหา IP ของคุณeth0
หรือeth<something>
อะแดปเตอร์ เสียบสิ่งนี้ลงในแถบที่อยู่ของเบราว์เซอร์ของคุณ
ใช้อะแดปเตอร์ NAT และการส่งต่อพอร์ต VirtualBox IMO นี้มีความซับซ้อนมากขึ้น
ไฟร์วอลล์ Debian
เป็นเวลานานแล้วที่ข้าได้ทำงานกับ Debian ดังนั้นฉันไม่รู้ว่าค่าเริ่มต้นในปัจจุบันคืออะไร แต่ถ้าทั้งสองสิ่งข้างต้นใช้งานไม่ได้นี่อาจคุ้มค่าที่จะดู หาก Debian ใช้งานไฟร์วอลล์คุณจะต้องเปิดพอร์ตที่คุณต้องการเข้าถึงจากเครื่องอื่น
หวังว่าจะช่วย :)