Come ottenere apache per servire un sito tramite VirtualBox?


8

Questo tutorial mi ha insegnato come creare una VM Ubuntu Server (12.10, 64-bit) in VirtualBox su una macchina host Windows 7 , installare Apache e far sì che serva un sito da un dominio fittizio accessibile tramite il browser della macchina host.

Ci sono voluti un giorno e molti tentativi (anche se sembrava che stavo seguendo le istruzioni quando sono state disposte, ho sempre fatto qualcosa di sbagliato) e alla fine l'ho fatto.

Trovo Ubuntu come un ambiente di sviluppo molto semplice rispetto a Windows, e quindi volevo la stessa cosa su Ubuntu. Quindi, questa volta, ho creato una VM Ubuntu Server in VirtualBox sul computer host Ubuntu , installato Apache e configurato. Ma quando accedo al sito tramite il dominio fittizio, viene visualizzato l' errore " Server non trovato ".

Sì, ho modificato il /etc/hostsfile proprio come indicato nel tutorial (che è per Windows 7). Ma non sono riuscito a farlo funzionare. Non so cosa c'è che non va. Qualcuno sa cos'altro dovrei fare?

EDIT: Se non sono abbastanza chiaro, per favore chiedi. Sono disposto a chiarire.


Vuoi utilizzare il server dal tuo computer (ad esempio per sviluppare) o da altri nella rete?
Davisein,

Il server è installato in una macchina virtuale (utilizzando virtualbox) e desidero accedere al sito Web di prova servito dal server da un browser sul computer host. Spero sia chiaro. A proposito, ho pubblicato la risposta (ma posso contrassegnarla come risposta solo dopo 2 giorni).
its_me

1
Certo, ho già votato per la tua risposta che è molto buona (a proposito). Volevo solo consigliarvi di aggiungere sia solo host sia a ponte (per l'accesso a Internet). E anche l'altra risposta è un requisito in un ambiente a ponte se si desidera accedere alla VM dall'esterno. Per rendere la domanda completamente chiara per gli altri;)
Davisein,

Risposte:


5

Se è necessario consentire ad altre macchine nella rete fisica di raggiungere la propria macchina virtuale o se la macchina virtuale necessita dell'accesso a Internet, utilizzare la rete a ponte. In caso contrario, attenersi alla rete solo host.

  1. Arrestare la macchina virtuale e aprirne le impostazioni in VirtualBox (OSE) Manager

  2. Vai alla scheda Rete

  3. Seleziona la modalità di rete che preferisci (collegamento in rete o solo host)

    Se si desidera utilizzare un collegamento in rete, è necessario selezionare la scheda di rete corretta in Nome: ____________ . Per le connessioni cablate, devi selezionare qualcosa di simile eth0. Le connessioni wireless sono generalmente denominate wlan0(i numeri possono variare).

  4. Salva le impostazioni

  5. Avviare la VM di Ubuntu

  6. Quando attivo, puoi raccogliere l'indirizzo IP eseguendo:

    sudo ifconfig
    

    L'output dovrebbe essere simile al seguente:

    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)
    

    Nell'output sopra, 192.168.1.4(sulla seconda riga) è l'indirizzo IP che può essere usato nel tuo sistema host Ubuntu per accedere alla tua VM.

  7. Ora apri il file hosts nella macchina host Ubuntu:

    sudo gedit /etc/hosts
    

    (Se non si desidera utilizzare gedit, sostituire la parola con il nome del vostro editor preferito. Ad esempio vim, nano.)

    Una volta aperto il file, aggiungi questa riga e salvalo :

    192.168.1.4   my-dummy-site.com
    
  8. Apri qualsiasi browser sul tuo computer host e vai a my-dummy-site.comper accedere al tuo sito Web, servito direttamente da VirtualBox.

(Un ringraziamento speciale a @iSeth per l'aiuto . Interamente basato su questa risposta , il bit NON è lo stesso.)


1
Questa soluzione dovrebbe funzionare. Sto provando un server di sviluppo con questa configurazione in questo momento. Inoltre, è possibile utilizzare contemporaneamente sia bridge che solo host. Bridged non consente al computer di hosting di raggiungere il proprio server (per quanto ne so). E solo l'host non consente l'accesso a Internet (quindi nessun aggiornamento). Di solito uso entrambi
Davisein,

1
@Davisein Wrong. La modalità di rete con bridge consente di accedere alle macchine virtuali dalla macchina host, fornendo allo stesso tempo (VM) l'accesso alla connessione Internet utilizzata dall'host. :)
its_me

Vero. Non elimino il mio commento precedente in modo che il tuo non sembri strano ma è sbagliato. Il sistema che non consente all'hosting e alla macchina guest di parlare è NAT, come detto qui virtualbox.org/manual/ch06.html .
Davisein,

Assicurati che IPTables non blocchi la connessione ...
Ethereal,

Ho seguito queste istruzioni a un T. Se apro un browser sulla macchina virtuale Ubuntu, è in grado di risolvere il DNS e servire my-dummy-site.com. Tuttavia, se apro un browser al di fuori della macchina virtuale Ubuntu (sulla mia macchina Windows 10 in cui è installata la macchina virtuale), non è in grado di risolvere my-dummy-site.com. Tuttavia, è in grado di risolvere l'IP 192.168.1.118! Quale potrebbe essere il problema?
Chris Nielsen,

0

rootPuò solo aprire le porte <1024, quindi se un utente normale esegue VirtualBox non aprirà la porta 80 sull'Host e la inoltrerà al Guest.

È possibile consentire ai programmi di aprire porte privilegiate eseguendo:

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

Non conosco il percorso VirtualBoxdell'eseguibile, ma puoi facilmente capirlo cercando qualcosa di simile a "VirtualBox" nell'output di ps auxf.


Lo proverò e ti farò sapere. Nel frattempo, hai detto che "Solo root può aprire le porte <1024" , ma ero ancora in grado di farlo funzionare (vedi la mia soluzione di seguito).
its_me

@its_me è perché la tua soluzione utilizza reti collegate.
Eric Carvalho,

Ah ok. Grazie per il chiarimento Eric. :)
its_me,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.