EC2上的Rails - Puma响应,但页面永远不会加载到浏览器上

时间:2018-04-08 04:14:34

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

首先,欢呼!这是我在Stack Overflow上的第一篇文章,我会尽量不做任何愚蠢的事:)。我花了最近3天的时间来讨论这个问题并且开始讨论,但从未真正找到解决方案,无论它是多么基本。

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

rails new test_app
cd test_app

此时,Rails抱怨我必须安装'listen'宝石,我做了(v 3.1.5)。然后我继续如下:

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

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

以下是我的烦恼:然后我跑了

rails server

并尝试通过端口3000上的Chrome连接到我的EC2。事实证明我能够达到通常的“你在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并且也没有得到任何响应。如果有人能让我知道我在这里犯的错误是多么愚蠢,我会很感激。

谢谢,

马西奥

1 个答案:

答案 0 :(得分:0)

首先,欢呼你很好地解释了你的问题

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

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