如何在本地网络上托管 Ruby on Rails 应用程序,以便多人可以访问它?
Posted
技术标签:
【中文标题】如何在本地网络上托管 Ruby on Rails 应用程序,以便多人可以访问它?【英文标题】:How do you host a Ruby on Rails application on a local network, so multiple people can access it? 【发布时间】:2012-08-04 01:03:21 【问题描述】:我是 RoR 的新手,对它的体验几乎为零。我收到了别人的项目,我需要找到一种方法来托管应用程序,这样人们就可以在本地访问它。该应用程序是蜘蛛脚本/walker 脚本/网络爬虫,无论您如何称呼它。基本上,它连接到一个网站,登录,每天检索某些数据并将其与以前的数据进行映射。在本地机器上,你使用它,访问 localhost:3000,你会得到前人设计的网页。我只是想知道如何让我们本地网络上的人公开该页面,以便他们可以连接到任意 IP 并看到相同的页面(它每天更新)?
我尝试做的是让包含应用程序的文件夹对网络公开,但为了使用它,我必须让网络上的每个人都允许写入它,并且每个人都必须安装 RoR 才能使用它。我想避免这种情况,因为它看起来不合逻辑,也不是我想要做的。
查看代码,我可以进行逆向工程并理解它的作用,但是在本地托管 Web 应用程序或类似的东西时,我以前从未这样做过。请帮忙!
提前致谢!
**编辑 - 这一切都是在 Windows 7 机器上完成的。
【问题讨论】:
在不知道您是如何启动应用程序的情况下,很难给您一个准确的答案;但是您需要做两件事 [a] 确保服务器正在侦听您的 LAN IP 和 [b] 确保端口 3000 在您的网络上未被阻止。使用您在本地计算机上启动系统所采取的步骤更新您的问题,以获得更详细的答案。 【参考方案1】:-
由于您使用的是 Windows,请打开命令行并运行
ipconfig
以查找您的本地 IP。它将列在“IP 地址”下。
告诉局域网中的人访问http://192.168.x.x:3000,将步骤 1 中的 IP 地址替换为 192.168.x.x。
【讨论】:
【参考方案2】:编辑:我错过了一件重要的事情,你是窗户。在 Windows 上,您可以使用 thin 并将其放在负载均衡器后面。虽然我建议将它托管在 UNIX 机器上:)
虽然在 webrick 中运行它(webrick 是用于开发的应用程序服务器,即当你运行 rails s 时)将让其他用户访问该网站永远不要为生产应用程序做同样的事情。如果你想在生产中运行这个应用程序,你需要更强大的应用程序服务器,比如passenger。我建议您将它与 Apache 或 nginx 一起使用,而不是单独使用它。设置完所有这些后,其他人可以通过输入 IP(xx.xx.xx.xx)来使用您的应用程序,您也可以要求您的系统管理员设置本地 DNS,这样您的用户就不必总是记住 IP 地址。
【讨论】:
【参考方案3】:说明:
在启动 Rails Server 时,我们还可以设置一些选项来配置开发环境下站点的 IP 地址和端口号,以在本地网络中托管网站。因此,如果我们想将 IP 从http://127.0.0.1:3000 更改为http://192.168.x.x:port(x= 0 到 255 任意一个数字),我们可以在 Rails 服务器命令中设置!但是为此,我们需要在当前网络中找出我们当前的 IP 地址,这将有助于我们在本地网络中为网站提供服务。
所以第一步:
我们将在我们的 PC 上打开我们的终端。对于 android 用户,我们需要打开 Termux 应用程序。然后只需键入ifconfig
即可获取我们设备在当前网络中的IP 地址。我们会得到这样的输出(这里我使用Android设备进行开发。所以输出可能与PC终端上的不同,但过程相同):
$ ifconfig
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
lo: flags=XX<UP,LOOPBACK,RUNNING> mtu XXXXX
inet 127.0.0.1 netmask 255.XXX.XXX.XXX
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen XXXX (UNSPEC)
wlan0: flags=XXXX<UP,BROADCAST,RUNNING,MULTICAST> mtu XXXX
inet 192.168.1.103 netmask 255.XXX.XXX.XXX broadcast 192.168.1.255
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen XXXX (UNSPEC)
X= some numbers with our device credentials which is dummied with this variable
如果您使用的是 WiFi 路由器,那么我们将需要 wlan0
部分来获取我们的设备 IP。在 wlan0 部分下有一个 inet 子部分显示我们当前的 IP! 是的,我们需要那个IP地址192.168.1.103!这可能因您的设备和网络而异。这是这个任务的关键!现在我们进入第二个重要步骤。
所以第二步是:
需要输入命令来配置 IP 地址。
rails s -b 192.168.1.103 -p 8080
这里:
rails s
用于 rails 服务器
-b 192.168.1.103
用于出价 IP 地址 用于从默认 IP http://127.0.0.1 进行自定义,这是我们的本地主机地址。
-p 8080
用于 端口 设置。 这部分是可选的。默认端口为 3000。
这是将 localhost IP (http://127.0.0.1) 更改为本地网络 IP 的过程,该 IP 可用于同一网络用户的其他设备。
现在我们的 rails 应用程序可以在我们的本地网络中使用!同一网络中的其他用户也可以在服务器命令运行时访问该网站。如果您还配置了端口号,则链接将为 http://192.168.1.103:8080。否则,如果您在没有端口配置的情况下使用了命令rails s -b 192.168.1.103
,则链接将为:http://192.168.1.103:3000
再次声明: 192.168.1.103 适用于我的情况,您的设备的 IP 地址会有所不同。这将需要用于您的服务器和链接地址。
【讨论】:
以上是关于如何在本地网络上托管 Ruby on Rails 应用程序,以便多人可以访问它?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP 标头?
在 Windows Server 上托管 Ruby 应用程序是不是可行? [关闭]