Ruby on rails 从本地网络上的另一台计算机访问webrick/rails
我有一个运行在localhost:3000上的rails应用程序。我希望从同一网络上的另一台计算机访问它。我觉得我以前很轻松地做过这件事,但这让我有些悲伤。我可以ping电脑的IP,但是在浏览器中点击IP:3000不起作用。我也尝试过启动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防火墙服务,则需要添
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
sudo ufw allow 3000
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。