Rails服务器正在运行,但无法连接到本地主机:3000。

18

我正在使用railstutorial.org学习Ruby on Rails。从第1章开始,我已经设置好一切并且一切正常。不过,突然间我的下一个应用程序出了问题。

我运行了"rails server"。

=> Booting WEBrick
=> Rails 3.2.9 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-11-15 00:45:08] INFO  WEBrick 1.3.1
[2012-11-15 00:45:08] INFO  ruby 1.9.3 (2012-11-10) [x86_64-linux]
[2012-11-15 00:45:08] INFO  WEBrick::HTTPServer#start: pid=2752 port=3000

看起来一切都正常,就像我的先前的应用程序一样。

然而,我尝试在各种浏览器上连接到 localhost:3000、0.0.0.0:3000、127.0.0.1:3000,它们都无法建立与服务器的连接。

需要注意的一些事项:

- 我之前能够连接到 localhost -- 只是似乎突然间停止工作了。

- 我的第一个应用程序运行得非常完美,但现在它也对我的第一个应用程序不起作用。

- 我没有防火墙阻止该端口,并且我的 hosts 文件也没有问题。

- 我使用的操作系统是 Ubuntu 12.10

我几乎总是通过搜索找到解决方案,但这次却没有...所以我需要一些帮助。这真的很令人沮丧,因为我觉得这是一个简单的问题,但我却被卡住了太长时间。

谢谢。


可能很明显,但你有检查过ps和netstat吗? - Josh Greifer
另外,ps显示PID TTY TIME CMD 2602 pts/0 00:00:00 bash 2797 pts/0 00:00:00 ps 我的Rails服务器应该出现在这些进程中吗?我在一个终端上让它保持运行状态,并在另一个终端上运行这些命令。抱歉,我对Ubuntu/Rails还不熟悉,所以有点迷茫。 - Alexander Sung
1
可能也很明显,但您是否在与浏览器相同的机器上启动服务器? - moritz
突然我也遇到了这个问题。有人找到解决方案了吗? - Arindam
@moritz 哇,你的评论真的帮了我很多——我没有意识到我使用的 shell 已经 SSH 连接到了虚拟机。 - zarak
显示剩余3条评论
9个回答

15

15

尝试在其他端口运行,比如说 3001 端口:
rails server -p 3001
如果它可以工作,那么再用上述命令在 3000 端口重新尝试一下。
我认为有其他软件正在使用你的 3000 端口,所以它没有响应。
或者查看这里进行一些高级操作。


嘿,谢谢你的回复,但它又突然开始工作了。我不太确定发生了什么。 - Alexander Sung

7
请确保在启动rails服务器之前运行rake db:create命令。

5
我正在使用rails 5.0.0.beta3,并遇到了这个问题。@andrewleung的回答帮助了我很多。
似乎Rails默认绑定地址在我的电脑上(macOS 10.11.6)出现了问题,但在其他一些电脑上却可以正常工作。
简单的解决方法就是使用rails server -b 127.0.0.1。然后您可以访问localhost:3000
我的猜测是(从https://serverfault.com/a/544188中得到的提示),我的电脑上localhost绑定存在问题,而127.0.0.1则更加具体明确。

谢谢,这对我有用!我刚刚发现这里缺少一个空格 rails server -b127.0.0.1,应该是 rails server -b 127.0.0.1 - Tonatiuh

1
我遇到了同样的问题,后来发现是在config/environment/production.rb文件中,config.assets.compile = false必须更改为config.assets.compile = true
然而,这可能会导致某些JavaScript和Sass元素无法正常工作。

0

对我来说...我在工作时使用代理,必须执行rails s -b 0.0.0.0 -p 3000


0
问题是我的虚拟机硬盘空间已经用完,甚至没有足够的空间来创建 server.pid 文件。但出于某种原因,它并没有因此抛出错误,尽管文件被创建了,但是却是空白的。

0

我遇到了同样的问题。原来是browser-sync也在localhost:3000上运行。

由于一些Rails开发者会使用browser-sync快速测试前端脚本,我认为这可能是使用3000端口的流行原因之一。


0

请检查您的/etc/hosts文件...是否将IP 0.0.0.0或localhost指向其他地址。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接