使用 Elastic Beanstalk Ruby 平台 - AWS Elastic Beanstalk

使用 Elastic Beanstalk Ruby 平台

重要

Amazon Linux 2 平台版本与 Amazon Linux AMI 平台版本(在 Amazon Linux 2 之前)完全不同。这些不同层代的平台在多个方面不兼容。如果您要迁移到 Amazon Linux 2 平台版本,请务必阅读将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2中的信息。

AWS Elastic Beanstalk Ruby 平台是一组环境配置,适用于可在 Puma 应用程序服务器下的 nginx 代理服务器后方运行的 Ruby Web 应用程序。每个平台分支对应于一个 Ruby 版本。

如果使用了 RubyGems,您可以将 Gemfile 文件包含在源代码包中以在部署期间安装程序包。

您的应用程序可能在不同的应用程序服务器下运行,例如 Passenger。您可以使用 Procfile 启动其他应用程序服务器,并使用 Gemfile 来安装它。有关详细信息,请参阅 使用 Procfile 配置应用程序进程

注意

如果您使用的是 Amazon Linux AMI Ruby 平台分支(在 Amazon Linux 2 之前),请注意,Elastic Beanstalk 提供了这些分支的两种风格:Puma 和 Passenger。如果您的应用程序需要 Passenger 应用程序服务器,您可以使用相应的 Passenger 平台分支,并且无需进行任何额外的配置。

Elastic Beanstalk 提供了配置选项,可供您用于自定义在 Elastic Beanstalk 环境中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行的软件。您可配置应用程序所需的环境变量,启用日志轮换至 Amazon S3,并将应用程序源中包含静态文件的文件夹映射至代理服务器所提供的路径。该平台还预定义了一些与 Rails 和 Rack 相关的常见环境变量,便于发现和使用。

Elastic Beanstalk 控制台中提供了配置选项,可用于修改运行环境的配置。要避免在终止环境时丢失环境配置,可以使用保存的配置来保存您的设置,并在以后将这些设置应用到其他环境。

要保存源代码中的设置,您可以包含配置文件。在您每次创建环境或部署应用程序时,会应用配置文件中的设置。您还可在部署期间使用配置文件来安装程序包、运行脚本以及执行其他实例自定义操作。

在 Elastic Beanstalk 控制台中应用的设置会覆盖配置文件中的相同设置(如果存在)。这让您可以在配置文件中包含默认设置,并使用控制台中的特定环境设置加以覆盖。有关优先顺序和其他设置更改方法的更多信息,请参阅配置选项

有关扩展 Elastic Beanstalk 基于 Linux 的平台的各种方法的详细信息,请参阅扩展 Elastic Beanstalk Linux 平台

配置 Ruby 环境

您可以使用 Elastic Beanstalk 控制台启用到 Amazon S3 的日志轮换,并配置应用程序可从环境中读取的变量。

访问相应环境的软件配置设置

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域) 列表中选择您的AWS区域。

  2. 在导航窗格中,选择 Environments (环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration (配置)

  4. Software (软件) 配置类别中,选择 Edit (编辑)

日志选项

Log options (日志选项) 部分有两个设置:

  • Instance profile (实例配置文件) - 指定有权访问与应用程序关联的 Amazon S3 存储桶的实例配置文件。

  • Enable log file rotation to Amazon S3 (启用日志文件轮换至 Amazon S3 的功能) – 指定是否应将应用程序的 Amazon EC2 实例的日志文件复制到与应用程序关联的 Amazon S3 存储桶中。

静态文件

为了提高性能,您可以通过 Static files (静态文件) 部分配置代理服务器,从 Web 应用程序内的一组目录中提供静态文件(例如 HTML 或图像)。对于每个目录,您都将虚拟路径设置为目录映射。当代理服务器收到对指定路径下的某个文件的请求时,它将直接提供此文件,而不是将请求路由至您的应用程序。

有关使用 Elastic Beanstalk 控制台配置静态文件的详细信息,请参阅提供静态文件

默认情况下,Ruby 环境中的代理服务器提供 /public 路径 public 文件夹中的所有文件,以及 /assets 路径 public/assets 子文件夹中的所有文件。例如,如果您的应用程序源代码在名为 logo.png 的文件夹中包含一个名为 public 的文件,则代理服务器将通过 subdomain.elasticbeanstalk.com/public/logo.png 将其提供给用户。如果 logo.png 位于 public 文件夹内名为 assets 的文件夹中,则代理服务器在 subdomain.elasticbeanstalk.com/assets/logo.png 提供。您可以配置额外的映射,如本节中所述。

环境属性

环境属性部分,您可以在运行应用程序的 Amazon EC2 实例上指定环境配置设置。环境属性会以密钥值对的形式传递到应用程序。

Ruby 平台为环境配置定义了以下属性:

  • BUNDLE_WITHOUT - 从 Gemfile 安装依赖项时所忽略的组的冒号分隔列表。

  • BUNDLER_DEPLOYMENT_MODE - 设置为 true(默认值)以使用捆绑程序在部署模式下安装依赖项。设置为 false 以在开发模式中运行 bundle install

    注意

    此环境属性未在 Amazon Linux AMI Ruby 平台分支(在 Amazon Linux 2 之前)上定义。

  • RAILS_SKIP_ASSET_COMPILATION - 设置为 true 可在部署期间跳过运行 rake assets:precompile

  • RAILS_SKIP_MIGRATIONS - 设置为 true 可在部署期间跳过运行 rake db:migrate

  • RACK_ENV - 指定 Rack 的环境阶段。例如,developmentproductiontest

在运行于 Elastic Beanstalk 中的 Ruby 环境内,可通过使用 ENV 对象访问环境变量。例如,您可以使用以下代码将名为 API_ENDPOINT 的属性读取到某个变量:

endpoint = ENV['API_ENDPOINT']

有关更多信息,请参阅环境属性和其他软件设置

Ruby 配置命名空间

您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以通过您使用的 Elastic Beanstalk 服务或平台定义并组织到命名空间 中。

您可以使用 aws:elasticbeanstalk:environment:proxy:staticfiles 命名空间来配置环境代理以提供静态文件。您可以定义虚拟路径到应用程序目录的映射。

Ruby 平台不定义任何特定于平台的命名空间。相反,它为常见的 Rails 和 Rack 选项定义环境属性。

以下配置文件指定一个静态文件选项,该选项将名为 staticimages 的目录映射到路径 /images,设置每个平台定义的环境属性,还设置名为 LOGGING 的附加环境属性。

例 .ebextensions/ruby-settings.config

option_settings: aws:elasticbeanstalk:environment:proxy:staticfiles: /images: staticimages aws:elasticbeanstalk:application:environment: BUNDLE_WITHOUT: test BUNDLER_DEPLOYMENT_MODE: true RACK_ENV: development RAILS_SKIP_ASSET_COMPILATION: true RAILS_SKIP_MIGRATIONS: true LOGGING: debug
注意

BUNDLER_DEPLOYMENT_MODE 环境属性和 aws:elasticbeanstalk:environment:proxy:staticfiles 命名空间未在 Amazon Linux AMI Ruby 平台分支(在 Amazon Linux 2 之前)上定义。

Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件之外,您还可使用控制台、保存的配置、EB CLI 或 AWS CLI 来配置选项。有关更多信息,请参阅 配置选项