Ruby on rails 从本地网络上的另一台计算机访问webrick/rails

Ruby on rails 从本地网络上的另一台计算机访问webrick/rails,ruby-on-rails,webrick,Ruby On Rails,Webrick,我有一个运行在localhost:3000上的rails应用程序。我希望从同一网络上的另一台计算机访问它。我觉得我以前很轻松地做过这件事,但这让我有些悲伤。我可以ping电脑的IP,但是在浏览器中点击IP:3000不起作用。我也尝试过启动rails s-b ipaddress,但没有成功 建议?假设Webrick启动时没有问题,这100%是防火墙问题。您应该提供一些规范,例如主机正在运行的操作系统,以及您是否具有控制防火墙的管理员权限 如果您在Linux上运行iptables防火墙服务,则需要添

我有一个运行在localhost:3000上的rails应用程序。我希望从同一网络上的另一台计算机访问它。我觉得我以前很轻松地做过这件事,但这让我有些悲伤。我可以ping电脑的IP,但是在浏览器中点击IP:3000不起作用。我也尝试过启动
rails s-b ipaddress
,但没有成功


建议?

假设Webrick启动时没有问题,这100%是防火墙问题。您应该提供一些规范,例如主机正在运行的操作系统,以及您是否具有控制防火墙的管理员权限

如果您在Linux上运行iptables防火墙服务,则需要添加一条规则来接受端口3000上的流量。它看起来像:

iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
该命令将是一个一次性的解决方案,不过,您需要扩展当前的iptables规则脚本,使其在每次系统引导或登录时都保持永久性


如果您运行的是Windows,根据您运行的是XP还是Vista/7,您需要执行类似的操作。我假设您在Vista/7环境中,您只需要按照本指南提供的步骤操作。

尝试在端口80上运行服务器,您的防火墙可能会阻止端口3000。

在确保服务器端防火墙对高端口上的传入连接打开后(这通常是正确的,默认端口为3000,因此您可能不需要执行任何操作)您还必须按如下方式启动服务器:

rails server -b 0.0.0.0
rails server -b 0.0.0.0 -p 80
它将其绑定到通用地址。默认情况下,它绑定到
localhost

使用此方法,您不必绑定到端口80,但您可以这样:

rails server -b 0.0.0.0
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

资料来源:


这对我来说很有效。没有防火墙问题,也不需要授予超级用户权限。

一个原因是您的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协议、主机端口3000(或任何其他)和来宾端口3000添加规则


  • 我正在使用foreman管理基于Procfile的应用程序


    在Procfile中将
    -b0.0.0.0
    添加到我的
    bundle exec rails s
    命令对我有效。

    您是否有防火墙阻止此访问?很难说,因为它在我的works网络上,而不是在家中。运行它的计算机连接到192.168.100子网。我的第二台计算机是wifi上的笔记本电脑,同一子网。请尝试在端口8上运行它0而不是3000yep,这样就可以了。现在可以工作了:)。如果您愿意,发布您的答案,我将接受,我有同样的问题,尽管我已经在端口80(-p80)上运行rails,但我仍然无法从同一网络上的其他计算机访问它。我仍然可以从其他计算机上访问其他应用程序,如SVN和UbersvnWeb界面,但ruby不能。有什么帮助吗?我这样做了,但仍然无法从同一台机器或同一网络中的另一台机器访问myip:80 OneHoopyFrood答案是完美的HoopyFrood的答案应该是已检查的答案。这个答案相当含糊,washyChosen的答案对我没有帮助,因为防火墙已经被禁用,但是,这个答案对我没有帮助。如果不禁用防火墙,“rails服务器-b 0.0.0.0”对我不起作用。首先,我必须使用“sudoufw disable”禁用防火墙,然后使用“rails server-b0.0.0.0”@AfzalMasood运行服务器,听起来像是您预先配置了ufw,默认情况下拒绝所有请求。这是一个很好的做法!只需在您的规则中允许端口3000,它应该会玩得很好。:)@OneHoopyFrood可能是,但我从未更改过任何与防火墙相关的内容,也没有通过defualt拒绝所有内容。如果您没有
    rvmsudo
    ,您只需使用
    sudoRails服务器-b0.0.0-p80
    (或者如果您编辑
    boot.rb
    ),就可以使用端口80。