首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS弹性豆柄-如何将现有环境从Ruby 2.1升级到Ruby 2.2

AWS弹性豆柄-如何将现有环境从Ruby 2.1升级到Ruby 2.2
EN

Stack Overflow用户
提问于 2015-06-29 16:18:26
回答 3查看 5.8K关注 0票数 30

AWS弹性豆柄-无法用最新的平台或eb upgrade从Ruby2.1克隆到Ruby2.2

我一直在砸我的头。早在5月份,AWS就宣布他们的Ruby弹性环境现在提供Ruby2.2(例如ruby-2.2-(passenger-standalone)ruby-2.2-(puma))。我无法将现有的ruby-2.1环境升级到ruby-2.2。看来我得重新创造它们了completely...that看起来很傻吗?外面还有人在经历这种事吗?我只是错过了一些简单的东西吗?

额外信息

几个月来,我一直在我的准备和生产环境中愉快地使用ruby-2.1-(passenger-standalone)。现在我想升级到最新的红宝石2.2平台。AWS文档说,这是相当微不足道的,事实上,它们的一些文档甚至似乎表明您可以使用eb clone <env-name> --update。这个标志在我使用的EB CLI 3.4.5中不存在:(另外,web控制台有一个具有最新平台选项菜单项的Clone,但是它被禁用了。

看来,要获得最新的Ruby2.2实例,我所能做的就是从头开始创建一个全新的环境。这太烦人了。

所以我试过的是..。

代码语言:javascript
复制
$ eb status
Environment details for: staging
  Application name: xyz
  Region: us-west-2
  Deployed Version: fbe7
  Environment ID: someId
  Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)
  Tier: WebServer-Standard
  CNAME: bla.bla.bla.elasticbeanstalk.com
  Updated: 2015-06-26 22:48:59.689000+00:00
  Status: Ready
  Health: Green

很好,确认我使用的是Ruby2.1。因此,让我们尝试升级:

代码语言:javascript
复制
$ eb upgrade
Environment already on most recent platform version.

好吧,这很好,那么平台本身呢:

代码语言:javascript
复制
$ eb platform select
It appears you are using Ruby. Is this correct?
(y/n): y

Select a platform version.
1) Ruby 2.2 (Puma)
2) Ruby 2.2 (Passenger Standalone)
3) Ruby 2.1 (Puma)
4) Ruby 2.1 (Passenger Standalone)
5) Ruby 2.0 (Puma)
6) Ruby 2.0 (Passenger Standalone)
7) Ruby 1.9.3
(default is 1): 2

现在,这里是我的平台设置:

代码语言:javascript
复制
$ eb platform show
Current default platform: Ruby 2.2 (Passenger Standalone)
New environments will be running:  64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.2 (Passenger Standalone)

Platform info for environment "staging":
Current: 64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)
Latest:  64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)

因此,新环境将利用Ruby2.2版本。这很好,但是我真的必须放弃我已经配置好的Ruby-2.1版本,而不是新创建的Ruby-2.1版本吗?赶快?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-13 13:01:49

通过使用aws cli (而不是eb cli),我找到了一个解决方案:

代码语言:javascript
复制
aws elasticbeanstalk update-environment --solution-stack-name "64bit Amazon Linux 2016.03 v2.1.0 running Ruby 2.3 (Puma)" --environment-name "dev-bg-123456" --region "us-east-1"

可以用自制安装aws。

代码语言:javascript
复制
brew install awscli
票数 57
EN

Stack Overflow用户

发布于 2015-07-03 21:39:13

我对这一挑战的解决办法是:

  1. 创造一个全新的环境。
  2. 创建Web应用程序或工作人员。
  3. 选择您想要的环境,可能是最新的最佳环境。就我而言,是Ruby-2.2的乘客。
  4. 我选择部署示例应用程序,以便新环境成功。
  5. 为您的新环境选择其余的选项,并让它启动。

在成功启动后,我设置了我的所有环境变量;例如,我的所有数据库、smtp、RAILS_ENV/RACK_ENV等等。然后我转到我以前部署的应用程序,然后简单地将我的最新质量版本部署到全新的环境中。

人们会同意,这比一个简单的eb upgrade要多得多。蹩脚的酱。

票数 2
EN

Stack Overflow用户

发布于 2018-06-27 20:52:16

我找到了解决这个问题的另一种方法。

我使它工作的方式类似于上面的注释,但我成功地更新了现有的豆茎环境,并且没有将代码部署到一个全新的环境中。

我采取了以下步骤:

  1. 在豆茎上启动了一个全新的环境,运行我需要的ruby版本,2.3 (在我的例子中,我需要从Ruby2.2升级到Ruby2.3)
  2. SSH-ed到新实例中,并安装了我的应用程序所需的所有依赖项(包、dev工具等)--您也可以在.ebextensions目录中执行这些操作。
  3. 从运行ruby2.3的实例创建了一个自定义AMI,安装了所有设备
  4. 使用了与拉尔夫发布的命令相同的命令,但使用了几个星期:
代码语言:javascript
复制
aws elasticbeanstalk update-environment --region "REGION" --environment-name "ENV_NAME" --solution-stack-name "64bit Amazon Linux 2018.03 v2.8.1 running Ruby 2.3 (Puma)" --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value="ami- 
xxxxxxxx"

AMI选项--设置是我的关键,因为这帮助我安装了ruby2.3.7的AMI,用于在现有环境中启动新实例。以前,只是打拉尔夫建议的指挥失败,每次尝试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31120676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档