【问题标题】:Deploying Simple Rails App with Elastic Beanstalk is Not Working使用 Elastic Beanstalk 部署简单 Rails 应用程序不起作用
【发布时间】:2013-09-06 04:05:04
【问题描述】:

我正在尝试将 Rails 应用程序启动到 Elastic Beanstalk。

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

我正在进行第 6.3 步,其中涉及更新应用程序。

eb status --verbose

返回就绪并返回绿色。

虽然,在它给我的 url 上显示的页面说:

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

您可能输入了错误的地址或页面可能已移动。”

本教程期待“欢迎加入您正在使用 Ruby on Rails!”要呈现的页面。

这可能是什么问题?我对此很陌生,所以我不确定从哪里开始诊断问题。

我已经为这个应用程序本地目录运行了 rails s,它确实显示了“欢迎加入你正在使用 Ruby on Rails!”页面正确。

谢谢!


当我执行 eb status --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 错误。错误消失了,尽管访问我的网站所在的 url 仍然给我相同的错误页面。


好的,我修复了信号 11 错误,尽管它仍未呈现 Ruby on Rails 欢迎页面。


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

同样,这只是一个在本地运行良好的普通应用程序。

EB UI 也显示“绿色和健康”。


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

现在我收到 502 Bad Gateway 错误。


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

不过,它已包含在我的宝石列表中。


【问题讨论】:

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


    【解决方案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/

    【讨论】:

    • 如果不是 your_key.pem 文件,还有哪些其他类型的文件?我下载了带有一些访问密钥的 .cvs 文件,但我不确定这是否与您在该 .pem 文件中查找的信息相同。另外,当我进入 EC2 时,没有列出任何实例。
    • 在您购买服务后,系统会为您提供一个 pem 密钥 - 并且只能下载一次 - 以及您的 EC2 服务器,我假设您已经拥有了。
    • 我认为您是在谈论具有私有访问密钥的 .cvs 文件?这是我唯一能想到的,我被要求下载一次并保持安全。我把它放在我的 osx 钥匙串中作为注释。是的,我得到了服务。
    • 我认为我所说的 cvs 文件是我的 IAM 用户的访问密钥。我不确定这个 pem 文件 tbh。此外,我见过的访问环境日志文件的唯一方法是创建应用程序和环境,然后从 Elastic beanstalk UI 中查看日志文件。
    • 我可以使用命令“eb logs”从 EB 获取日志文件,哈哈,在我尝试了几次之后,看起来“mysql2”没有安装的问题。跨度>
    【解决方案2】:

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

    $ pip install awsebcli
    $ eb 初始化

    选择默认区域
    1) us-east-1 :美国东部(弗吉尼亚北部)
    2) us-west-1 :美国西部(加利福尼亚北部)
    3) us-west-2 :美国西部(俄勒冈)
    4) eu-west-1 : 欧盟(爱尔兰)
    5) eu-central-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 上创建的环境
    2) [创建新应用]
    (默认为 2):1
    $ 耙秘密
    [您的超长密钥返回]
    $ eb setenv SECRET_KEY_BASE=[您返回的很长的密钥]

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

    现在访问 URL,应该不会出现 Bad Gateway 错误。上面的命令创建了一个名为 SECRET_KEY_BASE 的环境变量,并将其放置在运行您的应用程序的 web 节点上

    【讨论】:

      猜你喜欢
      • 2012-09-24
      • 2016-04-17
      • 2017-03-04
      • 2015-07-06
      • 2013-01-20
      • 2017-05-11
      • 2014-09-23
      • 2015-01-27
      • 2019-08-21
      相关资源
      最近更新 更多