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”?