本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Elastic Beanstalk Ruby 平台
本主题介绍如何在 Elastic Beanstalk 上配置、构建和运行 Ruby 应用程序。
AWS Elastic Beanstalk 支持适用于不同版本的 Ruby 编程语言的许多平台分支。有关完整列表,请参阅 AWS Elastic Beanstalk 平台文档中的 Ruby。
Ruby Web 应用程序可以在 Puma 应用程序服务器下的NGINX代理服务器后面运行。如果使用 RubyGems,则可以在源包Gemfile中包含,以便在部署期间安装软件包。
应用程序服务器配置
Elastic Beanstalk 根据您在创建环境时选择的 Ruby 平台分支安装 Puma 应用程序服务器。有关 Ruby 平台版本提供的组件的更多信息,请参阅 AWS Elastic Beanstalk 平台指南中的支持的平台。
您可以使用自己提供的 Puma 服务器配置应用程序。这样就可选择使用除 Ruby 平台分支预装版本之外的 Puma 版本。您也可以将应用程序配置为使用其他应用程序服务器,例如 Passenger。为此,您必须在部署中包括并自定义 Gemfile
。您还需要配置 Procfile
以启动应用程序服务器。有关更多信息,请参阅使用 Procfile 配置应用程序进程。
其他配置选项
Elastic Beanstalk 提供了配置选项,您可以使用这些选项来自定义在 Elastic Beanstalk 环境中的EC2亚马逊弹性计算云 (Amazon) 实例上运行的软件。您可配置应用程序所需的环境变量,启用日志轮换至 Amazon S3,并将应用程序源中包含静态文件的文件夹映射至代理服务器所提供的路径。该平台还预定义了一些与 Rails 和 Rack 相关的常见环境变量,便于发现和使用。
Elastic Beanstalk 控制台中提供了配置选项,可用于修改运行环境的配置。要避免在终止环境时丢失环境配置,可以使用保存的配置来保存您的设置,并在以后将这些设置应用到其他环境。
要保存源代码中的设置,您可以包含配置文件。在您每次创建环境或部署应用程序时,会应用配置文件中的设置。您还可在部署期间使用配置文件来安装程序包、运行脚本以及执行其他实例自定义操作。
在 Elastic Beanstalk 控制台中应用的设置会覆盖配置文件中的相同设置(如果存在)。这让您可以在配置文件中包含默认设置,并使用控制台中的特定环境设置加以覆盖。有关优先顺序和其他设置更改方法的更多信息,请参阅配置选项。
有关扩展 Elastic Beanstalk 基于 Linux 的平台的各种方法的详细信息,请参阅 扩展 Elastic Beanstalk Linux 平台。
配置 Ruby 环境
您可以使用 Elastic Beanstalk 控制台启用到 Amazon S3 的日志轮换,并配置应用程序可从环境中读取的变量。
访问相应环境的软件配置设置
打开 Elastic Beanstalk
控制台,然后在 “区域” 列表中,选择您的。 AWS 区域 -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
注意
如果您有多个环境,请使用搜索栏筛选环境列表。
在导航窗格中,选择 Configuration(配置)。
-
在 Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。
日志选项
Log options(日志选项)部分有两个设置:
-
Instance profile(实例配置文件)– 指定有权访问与应用程序关联的 Amazon S3 存储桶的实例配置文件。
-
启用向 Amazon S3 的日志文件轮换-指定是否将应用程序的 Amazon EC2 实例的日志文件复制到与您的应用程序关联的 Amazon S3 存储桶中。
静态文件
要提高性能,可以使用 “静态文件” 部分将代理服务器配置为从 Web 应用程序内的一组目录中提供静态文件(例如HTML或图像)。对于每个目录,您都将虚拟路径设置为目录映射。当代理服务器收到对指定路径下的某个文件的请求时,它将直接提供此文件,而不是将请求路由至您的应用程序。
有关使用配置文件或 Elastic Beanstalk 控制台配置静态文件的详细信息,请参阅 提供静态文件。
默认情况下,Ruby 环境中的代理服务器配置为提供静态文件,如下所示:
-
public
文件夹中的文件通过/public
路径和域根目录(/
路径)提供。 -
public/assets
子文件夹中的文件通过/assets
路径提供。
以下示例说明默认配置的工作原理:
-
如果您的应用程序源代码在名为
public
的文件夹中包含一个名为logo.png
的文件,则代理服务器将通过
和subdomain
.elasticbeanstalk.com/public/logo.png
将其提供给用户。subdomain
.elasticbeanstalk.com/logo.png -
如果您的应用程序源代码在
public
文件夹内名为assets
的文件夹中包含一个名为logo.png
的文件,则代理服务器将通过
将其提供给用户。subdomain
.elasticbeanstalk.com/assets/logo.png
您可以配置静态文件的其他映射。有关更多信息,请参阅本主题后面的Ruby 配置命名空间。
注意
对于 Ruby 2.7 版本 3.3.7 之前的平台AL2版本,默认的 Elastic Beanstalk nginx 代理服务器配置不支持从域根目录 () 提供静态文件。
此平台版本于 2021 年 10 月 21 日发布。有关更多信息,请参阅 AWS Elastic Beanstalk 发布说明中的新平台版本 - Ruby。subdomain
.elasticbeanstalk.com/
环境属性
环境属性部分允许您在运行您的应用程序的 Amazon EC2 实例上指定环境配置设置。环境属性会以密钥值对的形式传递到应用程序。
Ruby 平台为环境配置定义了以下属性:
-
BUNDLE_ WITHOUT — 从 Gemfile 安装依赖项
时要忽略的以冒号分隔的组列表。 -
BUNDLER_ DEPLOYMENT _ MODE — 设置为
true
(默认)以使用 Bundler 在部署模式下安装依赖项。设置为 false
以在开发模式中运行bundle install
。注意
此环境属性未在亚马逊 Linux AMI Ruby 平台分支(亚马逊 Linux 2 之前的分支)上定义。
-
RAILS_ SKIP ASSET _ COMPILATION — 设置
true
为rake assets:precompile
在部署期间跳过运行。 -
RAILS_ SKIP _ MIGRATIONS — 设置
true
为rake db:migrate
在部署期间跳过运行。 -
RACK_ ENV — 为 Rack 指定环境阶段。例如,
development
、production
或test
。
在运行于 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
命名空间未在亚马逊 Linux AMI Ruby 平台分支(亚马逊 Linux 2 之前的分支)上定义。
Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件外,您还可以使用控制台、保存的配置、EB 或CLI,来设置配置选项 AWS CLI。请参阅配置选项了解更多信息。