【问题标题】:Allow public connections to local Ruby on Rails Development Server允许与本地 Ruby on Rails 开发服务器的公共连接
【发布时间】:2012-03-06 03:55:22
【问题描述】:

我正在 Windows 机器上设置 RoR 开发环境。我想知道如何设置它,以便我的几个朋友可以访问网络服务器并监控进度?

在任何时间最多只有 2 或 3 人连接。

【问题讨论】:

  • 与编程无关 - 更多网站管理员或超级用户或系统管理员
  • 当你准备好展示一些东西时,设置一个免费的heroku 应用程序并执行 git push heroku master 会更好,而且可能更容易。允许人们查看您的开发通常会适得其反。

标签: ruby-on-rails ruby


【解决方案1】:

最简单的方法需要无需额外安装:只需在启动服务器时向rails server(或rails s)命令添加一个选项:

rails s --binding=0.0.0.0

0.0.0.0 地址的意思是“监听来自任何地方的请求”。在很多系统上,默认是127.0.0.1,意思是“只监听来自本地主机的请求”。

(如果您没有同时指定-p--port 选项,则端口应为3000,与往常一样。)

【讨论】:

  • 这是最好的答案
  • 在机器'A'上我运行rails s --binding=0.0.0.0 ...如何在同一个wifi上连接机器'B'?
  • @slindsey3000,在机器 B 上,使用机器 A 的 IP 地址作为 URL 中的主机名。如果您在 linux 上,请在机器 A 上运行 sudo ifconfig 以了解其本地 IP 地址;如果你在 Windows 上运行ipconfig。本地 IP 地址可能以 192.168.X.X10.71.X.X 开头。因此,您在机器 B 中的地址栏将类似于 http://192.168.0.14:3000/
  • 即使这样有效,绑定到 0.0.0.0 被认为是不安全的,我将始终使用 IP 地址。但仍然是一个有效的答案
  • 如果你走这条路,你可能需要配置你的防火墙和/或路由器以允许外部访问
【解决方案2】:

您可以告诉您的开发服务器监听您的可公开访问的接口:

如果您通过rails server 运行服务器,您可以通过-b <ip>--binding=<ip> 指定要监听的IP。默认情况下,服务器监听 0.0.0.0,即只监听本地连接。

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: 0.0.0.0

您可以改为找出您机器的网络地址并绑定到该地址,但是您必须转发端口并找出您在 Internet 上的可公开路由的 IP 地址;这超出了 Stack Overflow 的范围。

【讨论】:

  • 0.0.0.0其实就是机器上的所有连接,所以不需要绑定具体的IP地址。我一直从手机连接到 0.0.0.0 上的开发应用程序以检查移动布局。可能只需要防火墙上的一个洞。
  • @Eric 你能解释一下当你的本地 Rails 服务器在 0.0.0.0 上运行时你在手机上放的地址是什么?是0.0.0.0:3000 还是您运行服务器的计算机的IP,例如:192.168.0.100?
  • 我找到了 :) 你运行一个像 rails s -b 192.168.0.100 这样的本地 Rails 服务器,然后在你的手机上设置地址以将其定位到 '192.168.0.100:3000' ,或者你分配的任何端口到它运行的时候。很棒
  • 很多网络出于某种原因不允许这种情况发生
【解决方案3】:

试试localtunnel。这是一颗红宝石,所以你应该没有任何问题:

gem install localtunnel
localtunnel 3000

您第一次这样做时,它会要求您提供 ssh 密钥,但一旦您设置好它,它就会显示您可以共享的公共 URL。在指定端口上运行的任何内容都将在该 url 上公开。

Showoff-io 看起来像一个类似的服务,但我没有使用它,所以我无法评论。此外,它是付费的,需要注册。

【讨论】:

  • 很酷,谢谢。我还研究了 heroku,这似乎也是一个可靠的解决方案。
  • 如果您重新启动服务器,我会遇到 localtunnel 问题。 Showoff 可以更好地保持联系,但免费计划的时间限制为 5 分钟
  • localtunnel 现在好像挂了,试试 ngrok
  • 在最新版本(1.0.2)中启动localtunnel的命令已经改变。请改用lt -p 3000
【解决方案4】:

正如有人建议的那样,使用ngrok

这很简单。

【讨论】:

    【解决方案5】:

    通过将 Rails 服务器绑定到 0.0.0.0 来允许远程连接。

    这是给那些不喜欢打字的人的简写?:

    bin/rails s -b 0.0.0.0
    

    如果您还想允许 IPv6 连接 (Puma):

    bin/rails s -b [::]
    

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      相关资源
      最近更新 更多