Ci sono almeno tre componenti separati in gioco qui, ognuno dei quali deve essere configurato correttamente.
Indirizzo vincolante rotaie
Quando Rails (o un'altra applicazione server) si apre per ricevere connessioni di rete, si collegherà sia a un IP che a una porta. Se una richiesta in arrivo non corrisponde a entrambe, non accetterà la connessione. Da 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
...
Quindi, per impostazione predefinita, Rails accetterà solo le richieste inviate alla sua localhost
scheda di rete (chiamata loopback) (chiamata lo
). Dato che questo adattatore è accessibile solo dallo stesso computer, le uniche richieste che accetteranno saranno dalla stessa macchina virtuale Debian: buone e sicure per i test, ma non utili per la produzione, o anche test da un altro computer.
Se vuoi che i tuoi Rails siano accessibili da qualsiasi altro computer (incluso il tuo host Windows 7), dovrai dire a Rails di collegarsi a qualsiasi indirizzo IP che Debian abbia accessibile dall'esterno (vedi sotto).
Tuttavia, un modo più semplice è dire a Rails di collegarsi allo speciale indirizzo IP 0.0.0.0
, il che significa che qualsiasi scheda di rete . Quindi, avviare il server Rails in questo modo:
rails server -p 80 -b 0.0.0.0
renderà il tuo sito Web accessibile a chiunque possa vedere la tua VM in rete.
Questo è probabilmente ciò che ti ha ancora incasinato anche se gli altri due componenti funzionavano.
Indirizzo IP della macchina virtuale
Devi puntare il tuo browser verso la macchina virtuale Debian, che è il suo computer discreto.
La regola empirica localhost
è che si riferisce sempre allo stesso computer. Tuttavia, per scopi di rete, la tua VM Debian è un suo computer separato. Se si utilizza un browser Web nell'host di Windows 7, localhost
fare sempre riferimento a Windows 7 e nient'altro.
Hai due opzioni qui:
Impostare l'adattatore VM VirtualBox in modalità Bridge (come indicato nella domanda). Questo metterà il tuo Debian direttamente sulla stessa rete esterna / domestica / lavorativa del tuo host Windows 7. È quindi possibile determinare l'IP della propria VM Debian eseguendo ifconfig
. Cerca l'IP del tuo eth0
o eth<something>
dell'adattatore. Collegalo alla barra degli indirizzi del tuo browser.
Utilizzare un adattatore NAT e il port forwarding di VirtualBox . IMO questo è più complicato.
Firewall Debian
È passato un po 'di tempo da quando ho lavorato su Debian, quindi non so quali siano le impostazioni predefinite correnti, ma se le due cose precedenti non funzionano, potrebbe valere la pena esaminarle. Se Debian esegue un firewall, dovrai aprire tutte le porte a cui desideri accedere da un'altra macchina.
Spero che sia di aiuto :)