2011-09-06 111 views
48

我有一个在localhost:3000上运行的rails应用程序。我希望从同一网络上的另一台计算机访问它。我觉得我之前轻松做到了这一点,但它给了我一些悲伤。我可以很好地ping通电脑的IP,但在浏览器中点击ip:3000不起作用。我也尝试启动rails s -b ipaddress,但没有运气。从本地网络上的另一台计算机访问webrick/rails

对此提出建议?

+0

您是否有防火墙阻止此访问? – Brian

+0

很难说,因为它是在我的作品网络上,而不是在家里。运行它的计算机连接到192.168.100子网。我的第二台电脑是wifi上的笔记本电脑,同一子网。 – agmcleod

+2

尝试在端口80上运行它而不是3000 – VNO

回答

2

尝试运行在80端口的服务器,而不是,您的防火墙可能阻止端口3000

+2

我这样做,但仍然无法访问myip:80无论是从同一台机器或另一个在同一个网络 – marimaf

+1

OneHoopyFrood答案是完美的 –

+2

OneHoopyFrood的答案应该是一个检查。这个答案是相当希望washy –

4

假设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提供的步骤操作即可。

139

确保你的服务器端的防火墙是开放的高端口传入的连接后(这通常是真实的默认端口是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

来源:https://stackoverflow.com/a/29562898/1795429

+5

选择的答案没有帮助我,因为防火墙已经被禁用,但是,这一个。 – nipponese

+0

这对我有用。 –

+0

不禁用防火墙“rails server -b 0.0.0.0”对我不起作用。首先,我必须使用以下命令禁用防火墙:“sudo ufw disable”,然后使用以下命令运行服务器:“rails server -b 0.0.0.0” –

21
rails server -b 0.0.0.0 -p 8000 

这为我工作。没有防火墙问题,也不需要提供超级用户权限。

0

原因之一是你的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 
3
  1. 是的,这是一般一个很好的答案

    rails server -b 0.0.0.0 
    
  2. 如果使用Ubuntu的,你可能在防火墙打开端口:

    sudo ufw allow 3000 
    
  3. 如果您的系统运行在VirtualBox,您必须检查您的网络设置

    在网络模式NAT的情况下,您必须单击以扩展选项,然后到端口转发。添加TCP协议1,主机端口3000(或任何其他)和访客端口3000的规则。

相关问题