Como fazer com que o apache sirva um site via VirtualBox?


8

Este tutorial me ensinou como criar uma VM do Ubuntu Server (12.10, 64 bits) no VirtualBox em uma máquina host com Windows 7 , instalar o Apache e servir um site a partir de um domínio fictício acessível por meio do navegador da máquina host.

Demorou um dia e várias tentativas (embora parecesse que eu estava seguindo as instruções conforme elas foram dispostas, eu estava sempre fazendo algo errado) e finalmente fiz.

Eu acho o Ubuntu um ambiente de desenvolvimento muito mais integrado que o Windows, então eu queria a mesma coisa no Ubuntu. Então, desta vez, criei uma VM do servidor Ubuntu no VirtualBox na máquina host do Ubuntu , instalei o Apache e o configurei. Mas quando eu acesso o site através do domínio fictício, recebo o erro ' Servidor não encontrado '.

Sim, modifiquei o /etc/hostsarquivo conforme mencionado no tutorial (que é para o Windows 7). Mas não consegui fazê-lo funcionar. Não sei o que há de errado. Alguém sabe o que mais eu deveria estar fazendo?

EDIT: Se eu não estiver claro o suficiente, pergunte. Estou disposto a esclarecer.


Deseja usar o servidor do seu computador (por exemplo, para desenvolver) ou de outras pessoas na rede?
21412 Davisein

O servidor está instalado em uma máquina virtual (usando o virtualbox) e desejo acessar o site de teste servido pelo servidor a partir de um navegador na máquina host. Espero que esteja claro. Eu postei a resposta a propósito (mas só posso marcar como respondida após 2 dias).
its_me

1
Claro, eu já votei na sua resposta, o que é muito bom (btw). Eu só queria recomendar que você adicione apenas host e ponte (para acesso à Internet). E também a outra resposta é um requisito em um ambiente em ponte, se você deseja acessar a VM de fora. Para tornar a questão totalmente clara para os outros;)
Davisein

Respostas:


5

Se você precisar permitir que outras máquinas em sua rede física cheguem à sua VM ou se a VM precisar de acesso à Internet, use rede em ponte. Caso contrário, atenha-se à rede somente host.

  1. Pare sua VM e abra as configurações para ela no VirtualBox (OSE) Manager

  2. Vá para a guia Rede

  3. Selecione o modo de rede à sua escolha (rede em ponte ou somente host)

    Se você deseja usar a rede em ponte, selecione o adaptador de rede correto em Nome: ____________ . Para conexões com fio, você selecionaria algo chamado como eth0. As conexões sem fio geralmente são nomeadas wlan0(os números podem variar).

  4. Salve as configurações

  5. Inicie a VM do Ubuntu

  6. Quando ativado, você pode reunir o endereço IP executando:

    sudo ifconfig
    

    A saída deve ser semelhante a esta:

    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)
    

    Na saída acima, 192.168.1.4(na segunda linha) é o endereço IP que pode ser usado no sistema host do Ubuntu para acessar sua VM.

  7. Agora abra o arquivo hosts na máquina host Ubuntu:

    sudo gedit /etc/hosts
    

    (Se você não quiser usar gedit, substituir a palavra com o nome de seu editor favorito. Por exemplo vim, nano.)

    Quando o arquivo estiver aberto, adicione esta linha e salve -a:

    192.168.1.4   my-dummy-site.com
    
  8. Abra qualquer navegador em sua máquina host e acesse my-dummy-site.como site, servido diretamente no VirtualBox.

(Agradecimentos especiais a @iSeth pela ajuda . Totalmente baseado nesta resposta , o bit NÃO é o mesmo.)


1
Esta solução deve funcionar. Estou tentando um servidor de desenvolvimento com essa configuração agora. Além disso, ponte e somente host podem ser usados ​​ao mesmo tempo. O Bridged não permite que a máquina host alcance seu próprio servidor (tanto quanto eu sei). E o host apenas não permite acesso à Internet (portanto, não há atualizações). Eu costumo usar os dois #
Davisein 28/11/2012

1
@Davisein Wrong. O modo de rede em ponte permite que suas máquinas virtuais sejam acessadas a partir da máquina host, enquanto também fornece acesso (VM) à conexão à Internet usada pelo host. :)
its_me

Verdade. Não excluo meu comentário anterior para que o seu não pareça estranho, mas está errado. O sistema que não permite que a hospedagem e a máquina convidada falem é NAT, como foi dito aqui virtualbox.org/manual/ch06.html .
Davisein

Certifique-se de IPTables não está bloqueando a conexão ...
Ethereal

Eu segui estas instruções até um T. Se eu abrir um navegador na VM do Ubuntu, ele poderá resolver o dns e servir my-dummy-site.com. No entanto, se eu abrir um navegador fora da VM do Ubuntu (na minha máquina Windows 10 em que minha VM está instalada), ele não poderá resolver o site my-dummy-site.com. É capaz de resolver o IP 192.168.1.118! Qual poderia ser o problema?
22617 Chris Nielsen

0

Somente é rootpossível abrir portas <1024, portanto, se um usuário comum estiver executando o VirtualBox, ele não abrirá a porta 80 no Host e a encaminhará para o Convidado.

Você pode permitir que programas abram portas privilegiadas executando:

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

Não conheço o caminho do VirtualBoxexecutável, mas você pode facilmente descobrir algo semelhante ao "VirtualBox" na saída de ps auxf.


Vou experimentá-lo e informá-lo. Enquanto isso, você disse que "Somente o root pode abrir portas <1024" , mas eu ainda consegui fazê-lo funcionar (veja minha solução abaixo).
Novidade '28

@its_me é porque sua solução faz uso de rede em ponte.
Eric Carvalho

Ah ok. Obrigado pelo esclarecimento Eric. :)
its_me
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.