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 检查了新分支(一个以上是关于Elastic beanstalk Rails - 即使我设置了暂存环境,也默认为生产环境的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk——rails 部署问题
Rails 4 Elastic Beanstalk 部署错误
Rails 4.1 Elastic Beanstalk 找不到图片网址
使用 AWS Elastic Beanstalk 部署 Rails ActionCable