将 Sinatra 应用程序部署到 Elastic Beanstalk - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 Sinatra 应用程序部署到 Elastic Beanstalk

本演练介绍如何将简单的 Sinatra Web 应用程序部署到 AWS Elastic Beanstalk。

先决条件

本教程假设您对基本 Elastic Beanstalk 操作和 Elastic Beanstalk 控制台有一定了解。如果尚不了解,请按照开始使用 Elastic Beanstalk中的说明操作以启动您的第一个 Elastic Beanstalk 环境。

为了遵循本指南中的步骤,您需要命令行终端或外壳,以便运行命令。命令显示在列表中,以提示符 ($) 和当前目录名称(如果有)开头。

~/eb-project$ this is a command this is output

在 Linux 和 macOS 中,您可以使用首选的外壳程序和程序包管理器。在 Windows 10 中,您可以 安装 Windows Subsystem for Linux,获取 Ubuntu 和 Bash 与 Windows 集成的版本。

Sinatra 需要 Ruby 1.9 或更新版本。在本教程中,我们使用 Ruby 2.5.1 和相应的 Elastic Beanstalk 平台版本。按照设置 Ruby 开发环境上的说明操作来安装 Ruby。

启动 Elastic Beanstalk 环境

使用 Elastic Beanstalk 控制台创建 Elastic Beanstalk 环境。选择 Ruby 平台并接受默认设置和示例代码。

启动环境 (控制台)

  1. 使用下面的预配置链接打开 Elastic Beanstalk 控制台:console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced

  2. 对于 Platform (平台),选择与应用程序使用的语言匹配的平台和平台分支。

  3. 对于应用程序代码,选择示例应用程序

  4. 选择复查并启动

  5. 检查可用选项。选择要使用的可用选项,然后在准备就绪后选择创建应用程序

环境创建大约需要 5 分钟,将创建以下资源:

  • EC2 实例 - 配置为在您选择的平台上运行 Web 应用程序的 Amazon Elastic Compute Cloud (Amazon EC2) 虚拟机。

    各平台运行一组特定软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 NGINX 作为 Web 应用程序前的反向代理,向其转发请求、提供静态资产以及生成访问和错误日志。

  • 实例安全组 - 配置为允许端口 80 上的入站流量的 Amazon EC2 安全组。通过此资源,HTTP 流量可以从负载均衡器到达运行您的 Web 应用程序的 EC2 实例。默认情况下,其他端口不允许流量进入。

  • 负载均衡器 - 配置为向运行您的应用程序的实例分配请求的 Elastic Load Balancing 负载均衡器。负载均衡器还使您无需将实例直接公开在 Internet 上。

  • 负载均衡器安全组 - 配置为允许端口 80 上的入站流量的 Amazon EC2 安全组。利用此资源,HTTP 流量可从 Internet 到达负载均衡器。默认情况下,其他端口不允许流量进入。

  • Auto Scaling 组 - 配置为在实例终止或不可用时替换实例的 Auto Scaling 组。

  • Amazon S3 存储桶 - 使用 Elastic Beanstalk 时创建的源代码、日志和其他构件的存储位置。

  • Amazon CloudWatch 警报 - 用于监控环境中的实例负载的两个 CloudWatch 警报,它们将在负载过高或过低时触发。警报触发后,您的 Auto Scaling 组会扩展或收缩以进行响应。

  • AWS CloudFormation 堆栈 - Elastic Beanstalk 使用 AWS CloudFormation 启动环境中的资源并传播配置更改。这些资源在您可在 AWS CloudFormation 控制台中查看的模板中定义。

  • 域名 - 一个域名,它以下面的形式路由到您的 Web 应用程序:subdomain.region.elasticbeanstalk.com

所有这些资源都由 Elastic Beanstalk 管理。当您终止环境时,Elastic Beanstalk 会终止其包含的所有资源。

注意

Elastic Beanstalk 创建的 Amazon S3 存储桶将在多个环境之间共享并且在环境终止期间不会被删除。有关更多信息,请参阅将 Elastic Beanstalk 和 Amazon S3 结合使用

编写基本 sinatra 网站

创建和部署 sinatra 应用程序

  1. 利用以下内容创建名为 config.ru 的配置文件。

    例 config.ru

    require './helloworld' run Sinatra::Application
  2. 使用以下内容创建名为 helloworld.rb 的 Ruby 代码文件。

    例 helloworld.rb

    require 'sinatra' get '/' do "Hello World!" end
  3. 使用以下内容创建 Gemfile

    例 Gemfile

    source 'https://rubygems.org' gem 'sinatra'

部署您的应用程序

创建包含您的源文件的源包。以下命令将创建名为 sinatra-default.zip 的源包。

~/eb-sinatra$ zip ../sinatra-default.zip -r * .[^.]*

将源包上传到 Elastic Beanstalk 以将 Sinatra 部署到您的环境。

部署源包

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

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

    注意

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

  3. 在环境概述页面上,选择 Upload and deploy (上传和部署)

  4. 使用屏幕上的对话框上传源包。

  5. 选择 Deploy

  6. 部署完成后,选择站点 URL 以在新选项卡中打开您的网站。

清除

Elastic Beanstalk 使用完毕时,您可以终止您的环境。Elastic Beanstalk 会终止与环境关联的所有 AWS 资源,例如 Amazon EC2 实例数据库实例负载均衡器、安全组和警报

终止 Elastic Beanstalk 环境

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

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

    注意

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

  3. 选择 Environment actions (环境操作),然后选择 Terminate environment (终止环境)

  4. 使用屏幕上的对话框确认环境终止。

利用 Elastic Beanstalk,可以随时为您的应用程序轻松创建新环境。

后续步骤

有关 Sinatra 的更多信息,请访问 sinatrarb.com

当您继续开发应用程序时,您可能希望通过某种方式来管理环境和部署应用程序,而无需手动创建 .zip 文件并将该文件上传到 Elastic Beanstalk 控制台。Elastic Beanstalk 命令行界面 (EB CLI) 提供了易于使用的命令,这些命令可用于从命令行创建、配置应用程序并将应用程序部署到 Elastic Beanstalk 环境。

最后,如果计划在生产环境中使用应用程序,您会希望为环境配置自定义域名,并为安全连接启用 HTTPS