使用Elastic Beanstalk部署Simple Rails应用程序不起作用

时间:2013-09-03 03:12:03

标签: ruby-on-rails amazon-web-services ruby-on-rails-3.2 amazon-ec2

我正在尝试向Elastic Beanstalk启动rails应用程序。

在这里的教程:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html

我在第6.3步,其中包括更新应用程序。

eb status --verbose

返回就绪和绿色。

虽然,它给我的网址上显示的页面说:

“您要查找的页面不存在。

您可能输错了地址或页面可能已移动。“

本教程期待“欢迎您乘坐Ruby on Rails!”要渲染的页面。

这可能是什么问题?我是新手,所以我不知道从哪里开始诊断这个问题。

我为这个应用程序本地目录运行了rails,它确实显示了“欢迎乘坐Ruby on Rails!”页面正常。

谢谢!


当我执行eb状态--verbose它确实返回绿色并准备就绪,虽然就在此之前它会给我两次这样的错误:

error: git-credential-osxkeychain died of signal 11
error: git-credential-osxkeychain died of signal 11

我按照此处的教程https://help.github.com/articles/set-up-git来修复此信号11错误。错误消失了,虽然访问我的网站所在的网址仍然给我相同的错误页面。


好的我修复了信号11错误,虽然它仍然没有渲染Ruby on Rails欢迎页面。


当我从Elastic Beanstalk UI创建应用程序时,示例应用程序正常工作。但是,当我将计算机上的应用程序文件上传到EB并部署链接以查看应用程序时,显示“403 Forbidden”。

同样,这只是一个普通的香草应用程序,在本地工作正常。

EB UI也称“绿色和健康”。


我重新安装了git并因此更新了它,然后继续使用教程,即使正确的页面仍未呈现。基本上我完成了教程,除了终止部分。

现在我收到了502 Bad Gateway错误。


使用“eb log”我发现我一直收到有关安装mysql2并将其添加到gemfile的消息,我已经完成并运行了“bundle install”。纳达。

然而,它包含在我的宝石列表中。


2 个答案:

答案 0 :(得分:1)

当然没有太多可能出错的线索,但您可以在通过ssh连接到您的实例后查看日志。

简而言之:

  • 通过ssh连接到您的实例

  • 转到/ var / app / current / log

  • 阅读production.log文件

您可以在这篇文章中找到分步指南:

http://karmarails.wordpress.com/2013/08/25/production-sort-of-debugging-on-an-aws-machine-for-a-rails-application/

答案 1 :(得分:1)

我必须执行以下操作才能停止502 Bad Gateway错误。在使用仪表板上传应用程序并选择Ruby环境后,转到dev框上的rails应用程序,安装eb cli

$ pip install awsebcli
$ eb init

选择默认区域
1)us-east-1:美国东部(弗吉尼亚北部)
2)us-west-1:美国西部(加利福尼亚州北部)
3)us-west-2:美国西部(俄勒冈州)
4)欧盟西部1:欧盟(爱尔兰)
5)欧盟中心1:欧盟(法兰克福)
6)ap-south-1:亚太地区(孟买)
7)ap-southeast-1:亚太地区(新加坡)
8)ap-southeast-2:亚太地区(悉尼)
9)ap-northeast-1:亚太地区(东京)
10)ap-northeast-2:亚太(首尔)
11)sa-east-1:南美洲(圣保罗)
12)cn-north-1:中国(北京)
(默认为3):3

选择要使用的应用程序
1)[您创建的eb环境] ****选择您在EB上创建的ENV 2)[创建新申请]
(默认为2):1
$ rake secret
[你的长钥匙归还]
$ eb setenv SECRET_KEY_BASE = [你的长钥匙退回]

等等,你会看到这个...
信息:环境更新正在开始 信息:更新环境[您创建的eb环境]&#39配置设置。
信息:环境健康已经从Ok转变为Info。正在进行配置更新(运行17秒) 信息:已成功将新配置部署到环境中。

现在访问该网址,应该没有错误网关错误。上面的命令创建了一个名为SECRET_KEY_BASE的环境变量,并将其放在运行应用程序的webnode上