W grze występują co najmniej trzy oddzielne komponenty, z których każdy musi być poprawnie skonfigurowany.
Adres wiążący szyny
Gdy Railsy (lub inna aplikacja serwerowa) otworzą się w celu odebrania połączeń sieciowych, zostaną powiązane zarówno z adresem IP, jak i portem. Jeśli przychodzące żądanie nie pasuje do obu, połączenie nie zostanie zaakceptowane. Od 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
...
Tak więc domyślnie Railsy akceptują tylko żądania wysyłane do localhost
(zwanej lo
) karty sieciowej (pętli zwrotnej ). Ponieważ ten adapter jest dostępny tylko z tego samego komputera, jedyne akceptowane przez niego żądania będą z poziomu samej maszyny Wirtualnej Debiana: dobre i bezpieczne do testowania, ale nieprzydatne do produkcji, a nawet testowania z innego komputera.
Jeśli chcesz, aby Twoje Railsy były dostępne z dowolnego innego komputera (w tym Twojego hosta Windows 7), musisz powiedzieć Railsom, aby powiązał się z dowolnym adresem IP Debiana, który jest dostępny z zewnątrz (patrz poniżej).
Jednak łatwiejszym sposobem jest nakazanie Railsom powiązania ze specjalnym adresem IP 0.0.0.0
, co oznacza dowolną kartę sieciową . Tak więc, uruchamiając serwer Railsowy:
rails server -p 80 -b 0.0.0.0
sprawi, że Twoja strona będzie dostępna dla każdego, kto może zobaczyć twoją maszynę wirtualną w sieci.
Jest to prawdopodobnie to, co Cię jeszcze zawiodło, nawet jeśli pozostałe dwa komponenty działały.
Adres IP maszyny wirtualnej
Musisz skierować przeglądarkę na maszynę wirtualną Debiana, która jest własnym dyskretnym komputerem.
Ogólna zasada localhost
jest taka, że zawsze odnosi się do tego samego komputera. Jednak do celów sieciowych, twoja Debian VM jest oddzielnym komputerem. Jeśli korzystasz z przeglądarki internetowej na hoście systemu Windows 7, localhost
zawsze będzie odnosić się do systemu Windows 7 i nic więcej.
Masz tutaj dwie opcje:
Ustaw adapter VirtualBox VM w tryb mostka (jak wspomniano w pytaniu). Spowoduje to umieszczenie Debiana bezpośrednio w tej samej sieci zewnętrznej / domowej / roboczej, co host Windows 7. Następnie możesz określić adres IP maszyny Wirtualnej Debiana, uruchamiając ifconfig
. Spójrz na IP eth0
lub eth<something>
adaptera. Podłącz to do paska adresu przeglądarki.
Użyj adaptera NAT i przekierowania portów VirtualBox . IMO jest to bardziej skomplikowane.
Zapora ogniowa Debiana
Minęło trochę czasu, odkąd pracowałem nad Debianem, więc nie wiem, jakie są bieżące wartości domyślne, ale jeśli powyższe dwie rzeczy nie działają, warto to sprawdzić. Jeśli Debian używa zapory ogniowej, musisz otworzyć wszystkie porty, do których chcesz uzyskać dostęp z innej maszyny.
Mam nadzieję że to pomoże :)