Elastic beanstalk Rails - 即使我设置了暂存环境,也默认为生产环境

Posted

技术标签:

【中文标题】Elastic beanstalk Rails - 即使我设置了暂存环境,也默认为生产环境【英文标题】:Elastic beanstalk Rails - defaults to production environment even if I set staging environment 【发布时间】:2012-11-14 20:39:50 【问题描述】:

我正在尝试使用弹性 beantalk 调出 rails applciation 的暂存实例。我按照文档进行了以下操作:

eb init --environment staging
eb start --environment staging

在此之后,我检查了 .elasticbeanstalk/optionsettings 是否仍然将“生产”作为环境。我手动将其更新为暂存,并尝试了 git aws.push 命令。

一段时间后,一切都已部署,但是,当我加载 URL 时,应用程序似乎仍在使用所有生产配置,而不是暂存。我是否缺少任何步骤?

【问题讨论】:

【参考方案1】:

eb CLI 工具中的 --environment 开关不是指 Rails 环境,而是指您尝试启动的 Elastic Beanstalk 环境。 Elastic Beanstalk 环境是一组用于已部署应用程序版本的预置资源。这与 Rails/Rack 环境不同,后者只是用户定义的上下文,供应用程序代码在单个机器上运行。

为了设置您的Rails 环境,您需要在.elasticbeanstalk/optionsettings 文件中的eb start 之后设置RACK_ENV(或RAILS_ENV)环境变量,然后调用eb update 触发这些环境变量的更新。或者,您可以通过Elastic Beanstalk console 编辑您的Elastic Beanstalk 环境 配置;在正确的环境上点击“Environment details”,在Overview中点击“Edit Configuration”,然后进入“Container”调整环境变量(在这种情况下,您将编辑RACK_ENV字段)。

【讨论】:

设置 RACK_ENV 和 RAILS_ENV 有效。还必须重新启动应用服务器。【参考方案2】:

虽然我使用的是eb_deployer 而不是eb 命令行,但在尝试部署RAILS_ENV: development 时,我发现db:migrate 等在开发环境中运行,但它仍然在生产环境中启动了服务器模式。为了解决这个问题,必须在 option_settings 中同时传入 RACK_ENV 和 RAILS_ENV:

[
   namespace: 'aws:elasticbeanstalk:application:environment',
   option_name: 'RACK_ENV',
   value: "development"
 ,
 
   namespace: 'aws:elasticbeanstalk:application:environment',
   option_name: 'RAILS_ENV',
   value: "development"
 ]

【讨论】:

【参考方案3】:

这是首次将应用程序部署到 elasticbeanstalk 的明确指南。

1) eb init --profile profile-name(配置文件名称将在 .aws > config 中)

2) 输入序列号,根据需要选择默认区域。

3) 通过输入序列号选择要使用的应用程序。

4) 电子清单

5) eb 使用(列表中的名称)

6) eb status (会给你状态) 就是这样,您完成了初始化。 现在,如果你想改变环境,只需使用以下命令。

eb setenv RACK_ENV=staging(需要一段时间)。

eb 部署(在 git 暂存之后)。

你完成了!!!!

【讨论】:

我用 git 检查了新分支(一个 分支),每个分支都遵循上述,但需要使用“eb create”,而不是 init。

以上是关于Elastic beanstalk Rails - 即使我设置了暂存环境,也默认为生产环境的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk——rails 部署问题

Rails 4 Elastic Beanstalk 部署错误

Rails 4.1 Elastic Beanstalk 找不到图片网址

使用 AWS Elastic Beanstalk 部署 Rails ActionCable

Rails Elastic Beanstalk nginx 301 重定向

`/home/webapp` 不是目录 - Elastic Beanstalk (RAILS)