Rails 应用程序服务器 AWS OpsWorks 堆叠层 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Rails 应用程序服务器 AWS OpsWorks 堆叠层

重要

这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过 AWS 高级支持

注意

此层仅适用于基于 Linux 的堆栈。

Rails App Server 层是一个 AWS OpsWorks 堆栈层,为充当 Rails 应用程序服务器的实例提供蓝图。

安装: AWS OpsWorks Stacks 使用实例的软件包安装程序将服务器软件包安装到其默认位置。有关 Apache/Passenger 安装的更多信息,请参阅 Phusion Passenger。有关日志记录的更多信息,请参阅 Log Files。有关 Nginx/Unicorn 安装的更多信息,请参阅 Unicorn

Add Layer 页面提供以下配置选项,所有这些选项都是可选的。

Ruby 版本

您的应用程序将使用的 Ruby 版本。默认值为 2.3。

您还可以通过覆盖 [:opsworks][:ruby_version] 属性来指定您的首选 Ruby 版本。

注意

AWS OpsWorks Stacks 会安装一个单独的 Ruby 软件包,供配方和实例代理使用。有关更多信息,请参阅 Ruby 版本

Rails 堆栈

默认 Rails 堆栈为包含 Phusion PassengerApache2。您还可以使用包含 UnicornNginx

注意

如果您使用 Nginx 和 Unicorn,则必须将 unicorn gem 添加到您的应用程序的 Gemfile 中,如以下示例中所示:

source 'https://rubygems.org' gem 'rails', '3.2.15' ... # Use unicorn as the app server gem 'unicorn' ...
Passenger 版本

如果您已经指定了 Apache2/Passenger,则您必须指定 Passenger 版本。默认值是 5.0.28。

Rubygems 版本

默认 Rubygems 版本是 2.5.1

安装并托管 Bundler

允许您选择是否安装并托管 Bundler。默认值是 Yes

Bundler 版本

默认 Bundler 版本是 1.12.5。

自定义安全组

如果您选择不自动关联内置,则会显示此设置 AWS OpsWorks 将安全组与您的图层堆叠在一起。您必须指定要将哪一安全组与层关联起来。有关更多信息,请参阅 创建新堆栈

Elastic Load Balancer

您可以将 Elastic Load Balancing 负载均衡器连接到层的实例。

您可以使用自定义JSON或自定义属性文件修改某些配置设置。有关更多信息,请参阅 覆盖属性。要查看可以覆盖的 Apache、Nginx、Phusion Passenger 和 Unicorn 属性的列表,请参阅内置说明书属性

重要

如果您的 Ruby on Rails 应用程序使用SSL,我们建议您尽可能禁用SSLv3以解决 CVE-2014- 3566 中描述的漏洞。有关更多信息,请参阅 对 Rail SSLv3 s 服务器禁用

对 Rail SSLv3 s 服务器禁用

要禁SSLv3用 Rails 服务器,请将该层的 Ruby 版本设置更新为 2.1 或更高版本,这将安装 Ruby 2.1.4 或更高版本作为应用程序使用的版本。

  • 将层的 Ruby Version (Ruby 版本) 设置更新为 2.1 或更高版本。

  • 为您的 Rails 堆栈更新配置文件,如下所示。

带 Phusion Passenger 的 Apache

更新 Apache 服务器的 SSLProtocol 文件中的 ssl.conf 设置,如SSLv3对于 Apache 服务器禁用中所述。

带 Unicorn 的 Nginx

在 Nginx 服务器的 ssl_protocols 文件中添加一个显式 nginx.conf 指令。要禁用SSLv3,请覆盖内置 nginx 食谱nginx.conf.erb的模板文件,Rails App Server 层的安装配方使用该文件来nginx.conf创建,然后添加以下指令:

ssl_protocols TLSv1.2;

有关如何配置的更多信息nginx.conf,请参阅配置HTTPS服务器。有关如何覆盖内置模板的更多信息,请参阅使用自定义模板

连接到数据库

部署应用程序时, AWS OpsWorks Stacks 使用来自应用程序deploy属性的信息创建一个新database.yml文件。如果您将 My SQL 或 Amazon RDS 实例附加到应用程序, AWS OpsWorks Stacks 会将连接信息添加到deploy属性中,从而database.yml自动包含正确的连接数据。

如果应用程序没有附加数据库,则默认情况下, AWS OpsWorks Stacks 不会向deploy属性添加任何连接信息,也不会创建database.yml。如果要使用其他数据库,则可以使用 custom 将数据库属性与连接信息一起JSON添加到应用程序的deploy属性中。属性都在下方["deploy"]["appshortname"]["database"],其中 appshortname 是应用程序的简称, AWS OpsWorks 堆栈根据应用程序名称生成。您在自定义中指定的值JSON会覆盖所有默认设置。有关更多信息,请参阅 添加应用程序

AWS OpsWorks 堆栈将以下[:...][:database]属性值合并到。database.yml必需的属性取决于特定的数据库,但必须具有host属性或 AWS OpsWorks 堆栈不会创建database.yml

  • [:adapter] (String)-数据库适配器,如 mysql

  • [:database](字符串)-数据库名称。

  • [:encoding](字符串)-编码,这通常被设置为 utf8

  • [:host](字符串)-主机URL,例如railsexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com

  • [:reconnect](布尔值)-如果连接不再存在,应用程序是否重新连接。

  • [:password](字符串)-数据库密码。

  • [:port] (数字)。-数据库的端口号。使用此属性覆盖默认端口号,该属性由适配器设置。

  • [:username](字符串)-数据库用户名称。

以下示例显示了短名称JSON为 my app 的应用程序的自定义设置。

{ "deploy" : { "myapp" : { "database" : { "adapter" : "adapter", "database" : "databasename", "host" : "host", "password" : "password", "port" : portnumber "reconnect" : true/false, "username" : "username" } } } }

有关如何指定自定义的信息JSON,请参阅使用自定义 JSON。要查看用于创建 database.yml (database.yml.erb) 的模板,请转至内置说明书存储库

部署 Ruby on Rails 应用程序

您可以在任一受支持的存储库中部署 Ruby on Rails 应用程序。下面的内容介绍了如何将示例 Ruby on Rails 应用程序部署到运行 Apache/Passenger Rails 堆栈的服务器中。示例代码存储在公共存储 GitHub库中,但其他支持的存储库的基本过程相同。有关如何创建和部署应用程序的更多信息,请参阅应用程序。要查看包含大量注释的示例代码,请转到 https://github.com/awslabs/opsworks-demo-rails-photo-share-app

从 GitHub 存储库部署 Ruby on Rails 应用程序
  1. 创建包含 Rails App Server 层的堆栈 (Apache/Passenger 作为 Rails 堆栈),将一个全天候实例添加到层,然后启动实例

  2. 当实例处于联机状态后,将一个应用程序添加到堆栈,并指定以下设置:

    • Name - 您喜欢的任何名称;示例中使用的是 PhotoPoll

      AWS OpsWorks Stacks 使用此名称进行显示,并生成一个短名称供内部使用,并在堆栈配置和部署属性中标识应用程序。例如, PhotoPoll 简称是 photopoll。

    • App type - Ruby on Rails

    • Rails environment - 可用的环境由应用程序决定。

      示例应用程序有三个:developmenttestproduction。在此示例中,将环境设置为 development。查看每个环境的描述的示例代码。

    • Repository type -任何受支持的存储库类型。在此示例中指定 Git

    • 存储库 URL-应从中部署代码的存储库。

      在本示例中,将设置URL为git://github.com/awslabs/opsworks-demo-rails-photo-share-app

    对其余设置使用默认值,然后单击 Add App 创建应用程序。

  3. 将应用程序部署到 Rails App Server 实例。

  4. 部署完成后,转到 实例 页面,然后单击 Rails App Server 实例的公有 IP 地址。您将看到以下内容:

Congratulatory message for deploying first app with AWS OpsWorks, with stylized logo.