วิธีรับ apache ในการแสดงเว็บไซต์ผ่าน VirtualBox


8

บทช่วยสอนนี้สอนวิธีการสร้างเซิร์ฟเวอร์ Ubuntu (12.10, 64 บิต) VM ใน VirtualBox บนเครื่องโฮสต์Windows 7ติดตั้ง Apache และให้บริการไซต์จากโดเมนจำลองที่สามารถเข้าถึงได้ผ่านเบราว์เซอร์ของเครื่องโฮสต์

ใช้เวลาหนึ่งวันและพยายามหลายครั้ง (แม้ว่าดูเหมือนว่าฉันจะทำตามคำแนะนำในขณะที่พวกเขากำลังจัดวางฉันก็ทำอะไรผิดไปเสมอ) และในที่สุดฉันก็ทำมัน

ฉันพบว่า Ubuntu เป็นสภาพแวดล้อมในการพัฒนาที่ราบรื่นกว่า Windows ดังนั้นฉันจึงต้องการสิ่งเดียวกันบน Ubuntu ดังนั้นในครั้งนี้ฉันสร้าง Ubuntu Server VM ใน VirtualBox บนเครื่องโฮสต์Ubuntuติดตั้ง Apache และกำหนดค่า แต่เมื่อฉันเข้าถึงเว็บไซต์ผ่านโดเมนจำลองฉันได้รับข้อผิดพลาด' เซิร์ฟเวอร์ไม่พบ '

ใช่ฉันแก้ไข/etc/hostsไฟล์เช่นเดียวกับที่กล่าวไว้ในบทช่วยสอน (สำหรับ Windows 7) แต่ฉันไปทำงานไม่ได้ ไม่รู้ว่ามีอะไรผิดปกติ มีใครรู้บ้างฉันควรจะทำยังไงดี?

แก้ไข:ถ้าฉันยังไม่ชัดเจนโปรดถาม ฉันยินดีที่จะชี้แจง


คุณต้องการใช้เซิร์ฟเวอร์จากคอมพิวเตอร์ของคุณ (เช่นเพื่อพัฒนา) หรือจากคนอื่น ๆ ในเครือข่ายหรือไม่?
Davisein

เซิร์ฟเวอร์ถูกติดตั้งในเครื่องเสมือน (ใช้ virtualbox) และฉันต้องการเข้าถึงเว็บไซต์ทดสอบที่ให้บริการโดยเซิร์ฟเวอร์จากเบราว์เซอร์บนเครื่องโฮสต์ หวังว่าชัดเจน ฉันโพสต์คำตอบด้วยวิธีการ (แต่สามารถทำเครื่องหมายได้ว่าตอบหลังจาก 2 วัน)
its_me

1
แน่นอนว่าฉันได้ตอบโต้คำตอบของคุณแล้วซึ่งดีมาก (btw) ฉันแค่อยากจะแนะนำให้คุณเพิ่มทั้งโฮสต์เท่านั้นและบริดจ์ (สำหรับการเข้าถึงอินเทอร์เน็ต) และคำตอบอื่น ๆ ก็คือข้อกำหนดในสภาพแวดล้อมบริดจ์ถ้าคุณต้องการเข้าถึง VM จากภายนอก ที่จะทำให้คำถามอย่างเต็มที่ที่ชัดเจนสำหรับคนอื่น ๆ ;)
Davisein

คำตอบ:


5

หากคุณต้องการอนุญาตให้เครื่องอื่น ๆ ในเครือข่ายทางกายภาพของคุณเข้าถึง VM ของคุณหรือหาก VM ต้องการการเข้าถึงอินเทอร์เน็ตให้ใช้เครือข่ายบริดจ์ มิฉะนั้นยึดติดกับเครือข่ายของโฮสต์เท่านั้น

  1. หยุด VM ของคุณและเปิดการตั้งค่าในVirtualBox (OSE) Manager

  2. ไปที่แท็บเครือข่าย

  3. เลือกโหมดเครือข่ายตามที่คุณต้องการ (บริดจ์เครือข่ายหรือโฮสต์เท่านั้น)

    หากคุณต้องการที่จะใช้เครือข่าย bridged คุณได้เลือกอะแดปเตอร์เครือข่ายที่เหมาะสมที่ชื่อ: ____________ eth0สำหรับการเชื่อมต่อแบบใช้สายคุณจะต้องเลือกบางสิ่งบางอย่างเช่นการตั้งชื่อ การเชื่อมต่อไร้สายมักจะตั้งชื่อwlan0(หมายเลขอาจแตกต่างกัน)

  4. บันทึกการตั้งค่า

  5. เริ่ม Ubuntu VM

  6. เมื่อถึงตอนนี้คุณสามารถรวบรวมที่อยู่ IP ได้โดยเรียกใช้:

    sudo ifconfig
    

    ผลลัพธ์ควรมีลักษณะคล้ายกับนี้:

    eth0      Link encap:Ethernet  HWaddr 08:00:27:f4:c3:7b  
              inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fef4:c37b/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:20 errors:0 dropped:0 overruns:0 frame:0
              TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:3244 (3.2 KB)  TX bytes:2512 (2.5 KB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    

    ในเอาต์พุตข้างต้น192.168.1.4(บนบรรทัดที่สอง) เป็นที่อยู่ IP ที่สามารถใช้ในระบบโฮสต์ Ubuntu ของคุณเพื่อเข้าถึง VM ของคุณ

  7. ตอนนี้เปิดไฟล์hostsในเครื่องโฮสต์ Ubuntu:

    sudo gedit /etc/hosts
    

    (ถ้าคุณไม่ต้องการที่จะใช้geditแทนคำว่ามีชื่อของบรรณาธิการที่คุณชื่นชอบ. เช่นvim, nano.)

    เมื่อไฟล์เปิดขึ้นให้เพิ่มบรรทัดนี้และบันทึก :

    192.168.1.4   my-dummy-site.com
    
  8. เปิดเบราว์เซอร์ใด ๆ บนเครื่องโฮสต์ของคุณและไปที่my-dummy-site.comการเข้าถึงเว็บไซต์ของคุณเสิร์ฟจาก VirtualBox

(ขอบคุณเป็นพิเศษสำหรับ@iSethสำหรับความช่วยเหลือทั้งหมดนี้อิงจากคำตอบนี้เล็กน้อยไม่เหมือนกัน)


1
วิธีนี้ควรใช้งานได้ดี ฉันกำลังลองเซิร์ฟเวอร์การพัฒนาด้วยการกำหนดค่านี้ในตอนนี้ นอกจากนี้บริดจ์และโฮสต์เท่านั้นสามารถใช้ได้ในเวลาเดียวกัน Bridged ไม่อนุญาตให้เครื่องโฮสต์เข้าถึงเซิร์ฟเวอร์ของคุณเอง (เท่าที่ฉันรู้) และโฮสต์เท่านั้นไม่อนุญาตให้เข้าถึงอินเทอร์เน็ต (ดังนั้นจึงไม่มีการอัปเดต) ฉันมักจะใช้ทั้งสอง
Davisein

1
@Davisein ผิด โหมดเครือข่ายบริดจ์ช่วยให้เครื่องเสมือนของคุณสามารถเข้าถึงได้จากเครื่องโฮสต์ในขณะที่ให้การเข้าถึง (VM) กับการเชื่อมต่ออินเทอร์เน็ตที่ใช้โดยโฮสต์ :)
its_me

จริง ฉันไม่ได้ลบความคิดเห็นก่อนหน้าของฉันเพื่อที่คุณจะไม่ได้ดูแปลก แต่มันผิด ระบบที่ไม่อนุญาตให้โฮสติ้งและเครื่องของผู้เข้าพักที่จะพูดคุยได้เป็น NAT กล่าวว่านี่virtualbox.org/manual/ch06.html
Davisein

ตรวจสอบให้แน่ใจ IPTables ไม่ได้ปิดกั้นการเชื่อมต่อ ...
เบาหวิว

ฉันทำตามคำแนะนำเหล่านี้เพื่อ T หากฉันเปิดเบราว์เซอร์บน Ubuntu VM มันสามารถแก้ไข dns และให้บริการ my-dummy-site.com อย่างไรก็ตามหากฉันเปิดเบราว์เซอร์นอก Ubuntu VM (บนเครื่อง Windows 10 ที่ฉันติดตั้ง VM ไว้) จะไม่สามารถแก้ไข my-dummy-site.com ของฉันได้ มันสามารถแก้ไข IP 192.168.1.118 ได้! มีปัญหาอะไรบ้าง?
Chris Nielsen

0

เพียง แต่rootสามารถเปิดพอร์ต <1024 ดังนั้นหากผู้ใช้ปกติกำลังเรียกใช้ VirtualBox มันจะไม่เปิดพอร์ต 80 บนโฮสต์และส่งต่อไปยังบุคคลทั่วไป

คุณสามารถอนุญาตให้โปรแกรมเปิดพอร์ตที่มีสิทธิพิเศษได้โดยเรียกใช้:

setcap 'cap_net_bind_service=+ep' /path/to/executable

ผมไม่ทราบว่าเส้นทางไปยังที่VirtualBoxปฏิบัติการได้ แต่คุณสามารถคิดออกค้นหาสิ่งที่คล้ายกับ "VirtualBox" ps auxfในการส่งออกของ


ฉันจะลองและแจ้งให้คุณทราบ ในขณะเดียวกันคุณบอกว่า"มีเพียงรูทเท่านั้นที่สามารถเปิดพอร์ต <1024"ได้ แต่ฉันก็ยังสามารถใช้งานได้ (โปรดดูโซลูชันของฉันด้านล่าง)
its_me

@its_me เป็นเพราะโซลูชันของคุณใช้ประโยชน์จากเครือข่ายบริดจ์
Eric Carvalho

อ่าโอเค. ขอบคุณสำหรับการชี้แจง Eric :)
its_me
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.