Ich habe eine Rails-Anwendung, die auf localhost ausgeführt wird: 3000. Ich möchte von einem anderen Computer im selben Netzwerk darauf zugreifen. Ich habe das Gefühl, dass ich das schon einmal mit Leichtigkeit getan habe, aber es macht mir etwas Sorgen. Ich kann die IP des Computers problemlos anpingen, aber das Drücken von ip: 3000 im Browser funktioniert nicht. Ich habe auch versucht zu starten rails s -b ipaddress
und kein Glück.
Vorschläge?
ruby-on-rails
webrick
Agmcleod
quelle
quelle
Antworten:
Versuchen Sie stattdessen, den Server auf Port 80 auszuführen. Ihre Firewall blockiert wahrscheinlich Port 3000.
quelle
Nachdem Sie sichergestellt haben, dass Ihre serverseitige Firewall für die eingehende Verbindung an hohen Ports geöffnet ist (dies ist normalerweise der Fall und der Standardport ist 3000, sodass Sie wahrscheinlich nichts tun müssen), müssen Sie den Server auch wie folgt starten:
rails server -b 0.0.0.0
das bindet es an die universelle Adresse. Es bindet
localhost
standardmäßig an.Mit dieser Methode müssen Sie nicht an Port 80 binden, aber Sie können dies mögen:
rails server -b 0.0.0.0 -p 80
(Wenn Sie rvm verwenden, müssen Sie möglicherweise verwenden
rvmsudo
)Um diese Änderung dauerhafter zu machen, bearbeiten Sie Ihre
config/boot.rb
und fügen Sie Folgendes hinzu:require 'rails/commands/server' module Rails class Server def default_options super.merge(Host: '0.0.0.0', Port: 3000) end end end
Dann sollten Sie nur noch verwenden müssen
rails s
Quelle: https://stackoverflow.com/a/29562898/1795429
quelle
rvmsudo
, können Sie einfach verwendensudo rails server -b 0.0.0.0 -p 80
(oder nursudo rails s
bearbeitenboot.rb
), wenn Sie Port 80 verwenden möchten.rails server -b 0.0.0.0 -p 8000
Das hat bei mir funktioniert. Keine Firewall-Probleme und keine Notwendigkeit, Superuser-Berechtigungen zu erteilen.
quelle
Ja, das war im Allgemeinen eine gute Antwort :
rails server -b 0.0.0.0
Wenn Sie Ubuntu verwenden , müssen Sie wahrscheinlich den Port in der Firewall öffnen :
sudo ufw allow 3000
Wenn Ihr System in VirtualBox ausgeführt wird , müssen Sie Ihre Netzwerkeinstellungen überprüfen .
Im Netzwerkmodus
NAT
müssen Sie auf die erweiterten Optionen und dort auf Portweiterleitung klicken . Fügen Sie eine Regel für TCP-Protokoll, Host-Port 3000 (oder einen anderen) und Gast-Port 3000 hinzu.quelle
Angenommen, Webrick startet ohne Probleme, ist dies zu 100% ein Firewall-Problem. Sie sollten einige Spezifikationen angeben, z. B. welches Betriebssystem auf Ihrem Host ausgeführt wird und ob Sie über Administratorrechte für die Steuerung der Firewall verfügen.
Wenn Sie unter Linux arbeiten und den iptables-Firewalldienst ausführen, müssen Sie eine Regel hinzufügen, um Datenverkehr über Port 3000 zu akzeptieren. Es sieht ungefähr so aus:
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
Dieser Befehl wäre jedoch eine einmalige Lösung. Sie müssten Ihr aktuelles iptables-Regelskript erweitern, um es bei jedem Systemstart oder bei jeder Anmeldung dauerhaft zu machen.
Wenn Sie Windows ausführen, müssen Sie je nachdem, ob Sie XP oder Vista / 7 ausführen, etwas Ähnliches tun. Ich gehe davon aus, dass Sie sich in der Vista / 7-Umgebung befinden und nur die in diesem Handbuch beschriebenen Schritte ausführen müssen: http://windows.microsoft.com/en-US/windows7/Open-a-port -in-Windows-Firewall .
quelle
Ich verwende Foreman, um meine Procfile-basierte Anwendung zu verwalten.
Das Hinzufügen
-b 0.0.0.0
zu meinembundle exec rails s
Befehl in Procfile hat für mich funktioniert.quelle
Ein Grund ist, dass Ihre IP nicht an den Rails-Server gebunden ist. Sie können die IP mit der Befehlsoption -b binden.
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
quelle