从本地networking上的另一台计算机访问webrick / rails
我有本地主机上运行的rails应用程序:3000。 我希望从同一networking上的另一台计算机访问它。 我觉得我已经轻松地做到了这一点,但它给了我一些悲伤。 我可以ping电脑的IP很好,但在浏览器中打ip:3000不工作。 我也尝试启动rails s -b ipaddress
,也没有运气。
build议?
尝试在端口80上运行服务器,而防火墙可能阻塞了端口3000。
确保服务器端防火墙对高端口的传入连接开放(这通常是正确的,默认端口是3000,所以你可能不需要做任何事情),你也必须像这样启动服务器:
rails server -b 0.0.0.0
将其绑定到通用地址。 它默认绑定到localhost
。
使用这种方法,你不必绑定到端口80,但你可以这样做:
rails server -b 0.0.0.0 -p 80
(如果你使用rvm,那么你可能需要使用rvmsudo
)
为了使这个改变更加永久性,请编辑你的config/boot.rb
并join:
require 'rails/commands/server' module Rails class Server def default_options super.merge(Host: '0.0.0.0', Port: 3000) end end end
那么你应该只需要使用rails s
资料来源: https : //stackoverflow.com/a/29562898/1795429
rails server -b 0.0.0.0 -p 8000
这对我有效。 没有防火墙问题,也不需要给予超级用户权限。
假设Webrick开始没有问题,这是100%的防火墙问题。 您应该提供一些规范,例如您的主机正在运行的操作系统以及您是否拥有pipe理员权限,只要控制防火墙即可。
如果您在Linux上并运行iptables防火墙服务,则需要添加一个规则来接受通过端口3000的stream量。它看起来像这样:
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
该命令将是一次性解决scheme,但是您需要扩展当前的iptables规则脚本,使其在每次系统引导或login时都是永久性的。
如果你正在运行Windows,取决于你是否运行XP或Vista / 7,你需要做类似的事情。 我假设你在Vista / 7环境下,你只需要按照这个指南http://windows.microsoft.com/en-US/windows7/Open-a-port在Windows防火墙; 。
-
是的,这是一个很好的答案:
rails server -b 0.0.0.0
-
如果您使用Ubuntu ,则可能必须打开防火墙中的端口:
sudo ufw allow 3000
-
如果您的系统在VirtualBox中运行,则必须检查您的networking设置 。
在networking模式
NAT
的情况下,您必须单击扩展选项,然后在端口转发 。 添加TCP协议1,主机端口3000(或任何其他)和访客端口3000的规则。
原因之一是你的ip没有绑定到rails服务器。 您可以使用-b命令选项绑定ip。
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