部署 Rails 应用程序 aws elastic beanstalk 时出错

Posted

技术标签:

【中文标题】部署 Rails 应用程序 aws elastic beanstalk 时出错【英文标题】:error deploying rails app aws elastic beanstalk 【发布时间】:2017-03-04 20:12:52 【问题描述】:

我正在使用 Rails 5.00 尝试部署到 aws 时,我不断收到此错误

[实例:i-04fd37ed6913c4a8a] 实例上的命令失败。返回 代码:5 输出:(截断)...ng uglifier 3.0.2 安装 unf 0.1.4 安装turbolinks 5.0.1 安装activesupport 5.0.0.1 报错 安装 nokogiri (1.6.8) 时发生,并且 Bundler 不能 继续。确保gem install nokogiri -v '1.6.8' 成功 捆绑前。钩 /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh 失败。 有关更多详细信息,请使用控制台或 EB 检查 /var/log/eb-activity.log 命令行界面。

【问题讨论】:

nokogiri 有时会很痛苦。你真的需要尝试像它建议的那样安装它。为您的 EB 环境打开 SSH。然后手动运行 gem install 。它可能会因错误消息而爆炸。拿那个错误信息和谷歌。你可能需要做类似***.com/questions/25963315/… 【参考方案1】:

您有两种选择来解决您的问题:

1) 像这样将patch 添加到.ebextensions/packages.config

packages:
  yum:
    patch: []

这将使yum 包管理器在尝试bundle install 之前安装它。

2) 像这样向.ebextensions/nokogiri_command.config 添加命令配置:

commands:
  test:
    command: "bundle config build.nokogiri --use-system-libraries"

这两个选项中的任何一个都对我有用。在推送到 AWS 之前不要忘记提交。

【讨论】:

【参考方案2】:

我遇到了同样的错误“请确保 gem install nokogiri -v '1.6.8' 在捆绑之前成功。”

这是因为我没有为 ruby​​ 选择正确的部署版本。 最初,在创建环境时,我将 ruby​​ 平台默认设置为 2.3 版(Passenger)。出现上述错误。

我终止了环境并重新创建了它,但选择了我在开发环境中使用的 ruby​​ 2.2 (Puma)。 AWS 环境的创建没有任何错误。

虽然上述纠正措施解决了问题,但它并没有解释为什么创建 ruby​​ 2.3(乘客)环境会失败,尤其是因为我做了一种“固定”构建 - 环境创建是通过 AWS 控制台使用“示例应用程序”在配置中。我确实没有尝试通过 eb 命令行创建它或使用我的任何 elasticbeanstalk 脚本或部署我自己的应用程序。

【讨论】:

以上是关于部署 Rails 应用程序 aws elastic beanstalk 时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Elastic Beanstalk 部署 rails 应用程序时管理迁移

为啥我的 Rails 应用程序无法部署到 AWS Elastic Beanstalk?

在 AWS Elastic Beanstalk 上部署 Rails / Ember 应用程序

Rails aws elastic beanstalk部署错误与数据库适配器

如何修复 AWS Elastic Beanstalk 部署的 Rails 5.2 应用程序捆绑程序问题

无法将 Rails API 应用程序部署到 AWS Elastic Beanstalk