Es gibt mindestens drei separate Komponenten, die jeweils korrekt konfiguriert werden müssen.
Rails bindende Adresse
Wenn Rails (oder eine andere Serveranwendung) geöffnet wird, um Netzwerkverbindungen zu empfangen, wird eine Verbindung mit einer IP-Adresse und einem Port hergestellt. Wenn eine eingehende Anfrage nicht mit beiden übereinstimmt, akzeptiert sie die Verbindung nicht. Von 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 ...
Daher akzeptiert Rails standardmäßig nur Anforderungen, die an seinen localhost
(Loopback-) Netzwerkadapter (genannt lo
) gesendet werden . Da auf diesen Adapter nur von demselben Computer aus zugegriffen werden kann, werden die einzigen Anforderungen, die er akzeptiert, von der Debian-VM selbst abgerufen: gut und sicher zum Testen, jedoch nicht für die Produktion oder sogar für Tests auf einem anderen Computer.
Wenn Sie möchten, dass Ihre Rails von einem anderen Computer (einschließlich Ihres Windows 7-Hosts) aus erreichbar sind, müssen Sie Rails an die IP-Adresse von Debian binden, die von außen zugänglich ist (siehe unten).
Es ist jedoch einfacher, Rails mit der speziellen IP-Adresse 0.0.0.0
, dh jedem Netzwerkadapter, zu verbinden . Starten Sie Ihren Rails-Server also wie folgt:
rails server -p 80 -b 0.0.0.0
macht Ihre Website für jeden zugänglich, der Ihre VM im Netzwerk sehen kann.
Dies ist wahrscheinlich das, was Sie immer noch vermasselt hat, selbst wenn die anderen beiden Komponenten funktionieren.
VM IP-Adresse
Sie müssen Ihren Browser auf die virtuelle Debian-Maschine richten, bei der es sich um einen eigenen diskreten Computer handelt.
Als Faustregel localhost
gilt, dass es sich immer um denselben Computer handelt. Aus Gründen der Vernetzung ist Ihre Debian-VM jedoch ein separater Computer. Wenn Sie in Ihrem Windows 7-Host einen Webbrowser verwenden, localhost
wird immer auf Ihr Windows 7 verwiesen und sonst nichts.
Sie haben hier zwei Möglichkeiten:
Setzen Sie den VirtualBox VM-Adapter auf den Bridge-Modus (wie in Ihrer Frage erwähnt). Dadurch wird Ihr Debian direkt in dasselbe außerhalb / home / work-Netzwerk eingebunden wie Ihr Windows 7-Host. Sie können dann die IP-Adresse Ihrer Debian-VM durch Ausführen ermitteln
ifconfig
. Suchen Sie nach der IP Ihreseth0
oder deseth<something>
Adapters. Stecken Sie dies in die Adressleiste Ihres Browsers.Verwenden Sie einen NAT-Adapter und eine VirtualBox-Portweiterleitung . IMO das ist komplizierter.
Debian-Firewall
Es ist schon eine Weile her, seit ich an Debian gearbeitet habe, also weiß ich nicht, was die aktuellen Vorgaben sind. Wenn die beiden oben genannten Dinge jedoch nicht funktionieren, lohnt es sich vielleicht, nachzusehen. Wenn Debian eine Firewall ausführt, müssen Sie alle Ports öffnen, auf die Sie von einem anderen Rechner aus zugreifen möchten.
Hoffe das hilft :)