我有一个在localhost:3000上运行的rails应用程序。我希望从同一网络上的另一台计算机访问它。我觉得我之前轻松做到了这一点,但它给了我一些悲伤。我可以很好地ping通电脑的IP,但在浏览器中点击ip:3000不起作用。我也尝试启动rails s -b ipaddress
,但没有运气。从本地网络上的另一台计算机访问webrick/rails
对此提出建议?
我有一个在localhost:3000上运行的rails应用程序。我希望从同一网络上的另一台计算机访问它。我觉得我之前轻松做到了这一点,但它给了我一些悲伤。我可以很好地ping通电脑的IP,但在浏览器中点击ip:3000不起作用。我也尝试启动rails s -b ipaddress
,但没有运气。从本地网络上的另一台计算机访问webrick/rails
对此提出建议?
尝试运行在80端口的服务器,而不是,您的防火墙可能阻止端口3000
我这样做,但仍然无法访问myip:80无论是从同一台机器或另一个在同一个网络 – marimaf
OneHoopyFrood答案是完美的 –
OneHoopyFrood的答案应该是一个检查。这个答案是相当希望washy –
假设Webrick开始时没有问题,这是100%的防火墙问题。您应该提供一些规范,例如您的主机运行的操作系统以及您是否拥有管理员权限,只要控制防火墙即可。
如果你是在Linux上运行的iptables防火墙服务,你需要添加一个规则来接受通过端口3000的流量它看起来是这样的:
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
该命令将是一个单但是,您需要延长当前的iptables规则脚本,使其在每次系统启动或登录时都保持永久。
如果您正在运行Windows,则取决于您是在运行XP还是在运行XP或Vista/7,你需要做类似的事情。我将假设您处于Vista/7环境,您只需按照本指南http://windows.microsoft.com/en-US/windows7/Open-a-port-in-Windows-Firewall提供的步骤操作即可。
确保你的服务器端的防火墙是开放的高端口传入的连接后(这通常是真实的默认端口是3000,所以你可能不需要做任何事情),你必须像这样启动服务器:
rails server -b 0.0.0.0
它将它绑定到通用地址。它默认绑定到localhost
。
使用这种方法,你不必绑定到端口80,但你可以这样:
rails server -b 0.0.0.0 -p 80
(如果你使用RVM,那么你可能需要使用rvmsudo
)
为了使这一变化更为持久编辑您的config/boot.rb
和补充一点:
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
选择的答案没有帮助我,因为防火墙已经被禁用,但是,这一个。 – nipponese
这对我有用。 –
不禁用防火墙“rails server -b 0.0.0.0”对我不起作用。首先,我必须使用以下命令禁用防火墙:“sudo ufw disable”,然后使用以下命令运行服务器:“rails server -b 0.0.0.0” –
rails server -b 0.0.0.0 -p 8000
这为我工作。没有防火墙问题,也不需要提供超级用户权限。
原因之一是你的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
是的,这是一般一个很好的答案:
rails server -b 0.0.0.0
如果使用Ubuntu的,你可能在防火墙打开端口:
sudo ufw allow 3000
如果您的系统运行在VirtualBox,您必须检查您的网络设置。
在网络模式NAT
的情况下,您必须单击以扩展选项,然后到端口转发。添加TCP协议1,主机端口3000(或任何其他)和访客端口3000的规则。
您是否有防火墙阻止此访问? – Brian
很难说,因为它是在我的作品网络上,而不是在家里。运行它的计算机连接到192.168.100子网。我的第二台电脑是wifi上的笔记本电脑,同一子网。 – agmcleod
尝试在端口80上运行它而不是3000 – VNO