首先,欢呼!这是我在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并且也没有得到任何响应。如果有人能让我知道我在这里犯的错误是多么愚蠢,我会很感激。
谢谢,
马西奥
答案 0 :(得分:0)
首先,欢呼你很好地解释了你的问题
当您在EC2上部署应用程序时,这不是正确的方法,但仍然应该在浏览器中给您回复。请确保您的端口3000未被阻止。转到网络接口 - > 仔细选择您的实例 - >在安全组前面检查您的入站规则并确保端口3000已打开
以上解释只是回答你想要做的事情。虽然这不应该是正确的方法。正确的方法应该(简而言之)在使用Web服务器Apache或Nginx后面的机架服务器(puma,thin等)在rails应用程序上运行ruby。