¿Cómo obtener apache para servir un sitio a través de VirtualBox?

8

Este tutorial me enseñó cómo crear una VM de servidor Ubuntu (12.10, 64 bits) en VirtualBox en una máquina host de Windows 7 , instalar Apache y hacer que sirva un sitio desde un dominio ficticio accesible a través del navegador de la máquina host.

Me llevó un día y muchos intentos (aunque parecía que estaba siguiendo las instrucciones tal como estaban establecidas, siempre estaba haciendo algo mal) y finalmente lo hice.

Encuentro Ubuntu como un entorno de desarrollo mucho más fluido que Windows, por lo que quería hacer lo mismo en Ubuntu. Entonces, esta vez, creé una máquina virtual Ubuntu Server en VirtualBox en la máquina host de Ubuntu , instalé Apache y lo configuré. Pero cuando accedo al sitio a través del dominio ficticio, aparece el error ' Servidor no encontrado '.

Sí, modifiqué el /etc/hostsarchivo tal como se menciona en el tutorial (que es para Windows 7). Pero no pude hacerlo funcionar. No se lo que está mal. Alguien sabe qué más debería estar haciendo?

EDITAR: Si no estoy lo suficientemente claro, por favor pregunte. Estoy dispuesto a aclarar.

soy yo
fuente
¿Desea utilizar el servidor desde su computadora (por ejemplo, para desarrollar) o desde otros en la red?
Davisein
El servidor está instalado en una máquina virtual (usando virtualbox), y quiero acceder al sitio web de prueba que sirve el servidor desde un navegador en la máquina host. Espero que sea claro. He publicado la respuesta por cierto (pero solo puedo marcarla como contestada después de 2 días).
its_me
1
Claro, ya he votado tu respuesta, que es muy buena (por cierto). Solo quería recomendarle que agregue tanto el host como el puente (para acceso a Internet). Y también la otra respuesta es un requisito en un entorno puenteado si desea acceder a la VM desde el exterior. Para dejar la pregunta completamente clara para otros;)
Davisein

Respuestas:

5

Si necesita permitir que otras máquinas en su red física lleguen a su VM o si la VM necesita acceso a Internet, use una red en puente. De lo contrario, se adhieren a las redes solo de host.

  1. Detenga su VM y abra la configuración en el Administrador de VirtualBox (OSE)

  2. Vaya a la pestaña Red

  3. Seleccione el modo de red que prefiera (conexión en red en puente o solo host)

    Si desea utilizar una red en puente, debe seleccionar el adaptador de red correcto en Nombre: ____________ . Para las conexiones por cable, seleccionaría algo llamado como eth0. Las conexiones inalámbricas generalmente se nombran wlan0(los números pueden variar).

  4. Guarda la configuración

  5. Inicie la máquina virtual Ubuntu

  6. Cuando esté arriba, puede recopilar la dirección IP ejecutando:

    sudo ifconfig
    

    El resultado debería ser similar a esto:

    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)
    

    En la salida anterior, 192.168.1.4(en la segunda línea) está la dirección IP que se puede usar en su sistema host Ubuntu para acceder a su VM.

  7. Ahora abra el archivo hosts en la máquina host de Ubuntu:

    sudo gedit /etc/hosts
    

    (Si no desea utilizar gedit, sustituir la palabra con el nombre de su editor favorito. Por ejemplo vim, nano.)

    Una vez que el archivo esté abierto, agregue esta línea y guárdela :

    192.168.1.4   my-dummy-site.com
    
  8. Abra cualquier navegador en su máquina host y vaya my-dummy-site.coma acceder a su sitio web, servido directamente desde VirtualBox.

(Un agradecimiento especial a @iSeth por la ayuda . Totalmente basado en esta respuesta , el bit NO es lo mismo).

soy yo
fuente
1
Esta solución debería funcionar. Estoy probando un servidor de desarrollo con esta configuración en este momento. Además, tanto en puente como solo host se pueden usar al mismo tiempo. Bridged no permite que la máquina de alojamiento llegue a su propio servidor (que yo sepa). Y el host solo no permite el acceso a Internet (por lo que no hay actualizaciones). Usualmente uso ambos
Davisein el
1
@Davisein Incorrecto. El modo de red en puente permite acceder a sus máquinas virtuales desde la máquina host, al tiempo que le da acceso (VM) a la conexión a Internet utilizada por el host. :)
its_me
Cierto. No elimino mi comentario anterior para que el suyo no se vea raro pero está mal. El sistema que no permite que el host y la máquina invitada hablen es NAT, como se dice aquí virtualbox.org/manual/ch06.html .
Davisein
Asegúrese de que IPTables no esté bloqueando la conexión ...
Ethereal
Seguí estas instrucciones a una T. Si abro un navegador en Ubuntu VM, puede resolver el dns y servir my-dummy-site.com. Sin embargo, si abro un navegador fuera de Ubuntu VM (en mi máquina con Windows 10 donde tengo mi VM instalada), no podrá resolver my-dummy-site.com. ¡Sin embargo, puede resolver la IP 192.168.1.118! ¿Cual podría ser el problema?
Chris Nielsen
0

Solo rootpuede abrir puertos <1024, por lo que si un usuario normal está ejecutando VirtualBox, no abrirá el puerto 80 en el Host y lo reenviará al Guest.

Puede permitir que los programas abran puertos privilegiados ejecutando:

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

No conozco la ruta al VirtualBoxejecutable, pero puedes encontrarlo fácilmente buscando algo similar a "VirtualBox" en la salida de ps auxf.

Eric Carvalho
fuente
Lo intentaré y te lo haré saber. Mientras tanto, dijiste que "Solo el root puede abrir puertos <1024" , pero aún así pude hacer que funcionara (mira mi solución a continuación).
its_me
@its_me es porque su solución hace uso de redes en puente.
Eric Carvalho
Ah bien. Gracias por la aclaración Eric. :)
its_me