我有一个运行在localhost:3000上的Rails应用程序。我希望从同一网络上的另一台计算机访问它。我觉得我以前很轻松地做到了,但这让我有些悲伤。我可以ping通计算机的IP,但在浏览器中打ip:3000无效。我也尝试发射rails s -b ipaddress
,没有运气。
有什么建议吗?
我有一个运行在localhost:3000上的Rails应用程序。我希望从同一网络上的另一台计算机访问它。我觉得我以前很轻松地做到了,但这让我有些悲伤。我可以ping通计算机的IP,但在浏览器中打ip:3000无效。我也尝试发射rails s -b ipaddress
,没有运气。
有什么建议吗?
Answers:
请尝试在端口80上运行服务器,因为防火墙可能阻止了端口3000。
确保服务器端防火墙对高端口上的传入连接开放(通常为true,默认端口为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
rvmsudo
,你可以简单地使用sudo rails server -b 0.0.0.0 -p 80
(或只是sudo rails s
如果你编辑boot.rb
)如果你想使用端口80
假设Webrick启动没有问题,这是100%的防火墙问题。您应该提供一些规范,例如主机正在运行的操作系统以及就控制防火墙而言是否具有管理员特权。
如果您在Linux上并运行iptables防火墙服务,则需要添加一条规则以接受通过端口3000的通信。它看起来像:
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
但是,该命令将是一次性的解决方案,您需要扩展当前的iptables规则脚本,以使其在每次系统引导或登录时永久存在。
如果您运行的是Windows,则取决于您运行的是XP还是Vista / 7,您需要执行类似的操作。我假设您处于Vista / 7环境中,您只需要按照本指南中提供的步骤进行操作即可:http://windows.microsoft.com/zh-CN/windows7/Open-a-port在Windows防火墙中。