【问题标题】:Rails on EC2 - Puma responds, but page never loads on browserEC2 上的 Rails - Puma 响应,但页面从未在浏览器上加载
【发布时间】:2018-09-17 18:07:09
【问题描述】:

首先,干杯!这是我在 Stack Overflow 上的第一篇文章,我会尽量不做任何愚蠢的事情 :)。在过去的 3 天里,我一直在努力解决这个问题并在谷歌上搜索,但从未真正找到解决方案,无论它可能多么基本。

我设置了一个新的 EC2 实例(运行 Ubuntu 16.04)并使用一个简单的脚手架创建了一个新的 Rails (v 5.1.6) 应用程序:

rails new test_app
cd test_app

此时,Rails 抱怨我必须安装“listen”gem,我安装了(v 3.1.5)。然后我进行如下操作:

rails g scaffold article title:string
rails db:create
rails db:migrate

到目前为止一切顺利。然后我继续配置 AWS 的安全组并正确允许 TCP 连接通过端口 3000。我目前使用 Puma (v 3.7) 作为服务器。

这就是困扰我的地方:然后我跑了

rails server

并尝试通过端口 3000 上的 Chrome 连接到我的 EC2。结果我能够访问通常的“You're on Rails”页面,没问题,但是当我尝试访问任何其他页面,比如 /articles 或 /articles/new,我在控制台中收到了来自服务器的肯定响应:

Started GET "/articles" 
Processing by ArticlesController#index as HTML
Rendering articles/index.html.erb within layouts/application
Article Load (0.7ms)  SELECT "articles".* FROM "articles"
Rendered articles/index.html.erb within layouts/application (47.3ms)
Completed 200 OK in 3912ms (Views: 3807.5ms | ActiveRecord: 1.5ms)

但是浏览器一直在等待响应。我也尝试通过 curl 访问 URL,但也没有得到响应。如果有人能告诉我我在这里犯了多么愚蠢的错误,我将不胜感激。

谢谢,

马尔西奥

【问题讨论】:

    标签: ruby-on-rails amazon-ec2 server puma


    【解决方案1】:

    首先,很高兴你很好地解释了你的问题

    当您在 EC2 上部署您的应用程序时,这不是正确的做法,但它仍然应该在浏览器中为您提供响应。请确保您的端口 3000 未被阻塞。转到网络接口 -> 仔细选择您的实例 -> 在安全组前面检查您的入站规则并确保端口 3000 已打开

    以上解释只是为了回答你想要做的任何事情。虽然这不应该是正确的方法。正确的方法应该(简而言之)是在 Web 服务器 Apache 或 Nginx 后面使用机架服务器(puma、thin 等)运行您的 ruby​​ on rails 应用程序。

    【讨论】:

    • 您好,感谢您的回复!事实上,我最初打算使用 Nginx 作为 Web 服务器,但由于我遇到了这种奇怪的行为,我尝试创建一个最小的应用程序,看看我是否仍然会收到错误。我确实按照您的建议检查了安全组,并且端口 3000 似乎是完全开放的(我已将 0.0.0.0/0 和 ::/0 添加到 CIDR 字段)。您认为这可能是防火墙问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2015-11-29
    • 2023-02-03
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多