Rails 服务器正在运行,但无法连接到 localhost:3000

Posted

技术标签:

【中文标题】Rails 服务器正在运行,但无法连接到 localhost:3000【英文标题】:Rails server is running, but cannot connect to localhost:3000 【发布时间】:2012-11-03 20:37:02 【问题描述】:

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

我运行“rails 服务器”

=> 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 ——它似乎突然停止工作了。

-我的第一个应用程序运行良好,但现在它也不适用于我的第一个应用程序。

-我没有防火墙阻止端口,我的主机文件不是问题。

-我在 Ubuntu 12.10

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

谢谢。

【问题讨论】:

可能很明显,但是你用ps和netstat检查过吗? 如果你运行wget http://0.0.0.0:3000,你会得到什么? 我得到:Connecting to 0.0.0.0:3000... connected. HTTP request sent, awaiting response... 200 OK Length: 5906 (5.8K) [text/html] 另外,ps 显示PID TTY TIME CMD 2602 pts/0 00:00:00 bash 2797 pts/0 00:00:00 ps 我的rails 服务器应该出现在进程中吗?我让它在一个终端上运行并在另一个终端上运行这些命令。抱歉,我是 Ubuntu/Rails 新手,所以我有点迷茫 可能也很明显,但是您是在与浏览器相同的机器上启动服务器吗? 【参考方案1】:

尝试在其他端口(例如 3001)中运行它: 导轨服务器 -p 3001 如果它比上面的命令在 3000 上再试一次。 我认为其他一些软件正在使用您的 3000 端口,这就是它没有响应的原因。 或者对于一些高级的东西看here

【讨论】:

嘿,感谢您的回复,但它又开始随机地为我工作了。不太清楚发生了什么。【参考方案2】:

使用 rails 4.2.0,服务器默认绑定到 localhost,而不是 0.0.0.0。在虚拟盒子中使用rails时,从主机访问服务器,绑定地址需要为0.0.0.0

使用-b0.0.0.0 启动rails 服务器,以使rails 服务器可以从主机/浏览器访问。

http://guides.rubyonrails.org/4_2_release_notes.html#default-host-for-rails-server https://github.com/samuelkadolph/unicorn-rails/issues/12#issuecomment-60875268

【讨论】:

【参考方案3】:

确保在启动 rails 之前运行 rake db:create

【讨论】:

【参考方案4】:

我正在使用 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【参考方案5】:

我遇到了同样的问题,我意识到它在 config/environment/production.rb 文件中,必须将 config.assets.compile = false 更改为 config.assets.compile = true

然而,这可能会导致一些 javascript 和 sass 元素无法正常工作

【讨论】:

【参考方案6】:

原来我遇到的问题是我的虚拟机已经用完了硬盘空间,甚至没有足够的空间来创建 server.pid 文件。但由于某种原因,它并没有为此引发错误,因为正在创建文件,而是留空。

【讨论】:

【参考方案7】:

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

由于一些 Rails 开发人员会使用浏览器同步来快速测试前端脚本,我认为这可能是使用端口 3000 的一个普遍原因。

【讨论】:

【参考方案8】:

检查您的 /etc/hosts 文件。是 ip 0.0.0.0 还是 localhost 指向其他地址。

【讨论】:

【参考方案9】:

对我来说...我在工作中担任代理,不得不做rails s -b 0.0.0.0 -p 3000

【讨论】:

以上是关于Rails 服务器正在运行,但无法连接到 localhost:3000的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker 容器中运行 .Net 5 API 时无法连接到 Postgres

Opsworks:Rails 层连接到 Elasticache:Redis

无法连接到服务器 - 错误“/var/run/postgresql/.s.PGSQL.5432”?

Discord bot 正在运行,但无法连接到服务器

netstat 说 443 已打开,但我无法使用 telnet 连接到它.. 为啥?

iPhone 连接到 localhost rails sarver