Hier spielen mindestens drei separate Komponenten eine Rolle, von denen jede korrekt konfiguriert werden muss.
Schienenbindungsadresse
Wenn Rails (oder eine andere Serveranwendung) geöffnet wird, um Netzwerkverbindungen zu empfangen, wird es sowohl an eine IP als auch an einen Port gebunden. Wenn eine eingehende Anforderung nicht mit beiden übereinstimmt, wird die Verbindung nicht akzeptiert. 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 den localhost
(angerufenen lo
) (Loopback-) Netzwerkadapter gesendet werden . Da auf diesen Adapter nur von demselben Computer aus zugegriffen werden kann, werden nur Anfragen von der Debian-VM selbst akzeptiert: gut und sicher zum Testen, aber nicht nützlich für die Produktion oder sogar zum Testen von einem anderen Computer.
Wenn Sie möchten, dass auf Ihre Rails von einem anderen Computer (einschließlich Ihres Windows 7-Hosts) aus zugegriffen werden kann, müssen Sie Rails anweisen, sich an die IP-Adresse zu binden, auf die Debian von außen zugreifen kann (siehe unten).
Eine einfachere Möglichkeit besteht jedoch darin, Rails anzuweisen, sich an die spezielle IP-Adresse zu binden, dh an 0.0.0.0
einen beliebigen Netzwerkadapter . 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 durcheinander gebracht hat, selbst wenn die beiden anderen Komponenten funktionierten.
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 auf denselben Computer bezieht. Für Netzwerkzwecke ist Ihre Debian-VM jedoch ein eigener separater Computer. Wenn Sie einen Webbrowser in Ihrem Windows 7-Host verwenden, localhost
wird immer auf Ihr Windows 7 und nichts anderes verwiesen.
Sie haben hier zwei Möglichkeiten:
Stellen Sie den VirtualBox VM-Adapter auf den Bridge-Modus (wie in Ihrer Frage erwähnt). Dadurch befindet sich Ihr Debian direkt im selben externen / privaten / beruflichen Netzwerk wie Ihr Windows 7-Host. Sie können dann die IP Ihrer Debian-VM durch Ausführen ermitteln ifconfig
. Suchen Sie nach der IP Ihres eth0
oder Ihres eth<something>
Adapters. Stecken Sie dies in die Adressleiste Ihres Browsers.
Verwenden Sie einen NAT-Adapter und eine VirtualBox-Portweiterleitung . IMO ist das komplizierter.
Debian-Firewall
Es ist schon eine Weile her, dass ich an Debian gearbeitet habe, daher weiß ich nicht, wie die aktuellen Standardeinstellungen lauten, aber wenn die beiden oben genannten Dinge nicht funktionieren, ist dies möglicherweise einen Blick wert. Wenn Debian eine Firewall ausführt, müssen Sie alle Ports öffnen, auf die Sie von einem anderen Computer aus zugreifen möchten.
Hoffe das hilft :)