本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Rails 应用程序服务器 AWS OpsWorks 堆叠层
重要
这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过
注意
此层仅适用于基于 Linux 的堆栈。
Rails App Server 层是一个 AWS OpsWorks 堆栈层,为充当 Rails 应用程序服务器的实例提供蓝图。
安装: AWS OpsWorks Stacks 使用实例的软件包安装程序将服务器软件包安装到其默认位置。有关 Apache/Passenger 安装的更多信息,请参阅 Phusion Passenger
Add Layer 页面提供以下配置选项,所有这些选项都是可选的。
- Ruby 版本
-
您的应用程序将使用的 Ruby 版本。默认值为 2.3。
您还可以通过覆盖 [:opsworks][:ruby_version] 属性来指定您的首选 Ruby 版本。
注意
AWS OpsWorks Stacks 会安装一个单独的 Ruby 软件包,供配方和实例代理使用。有关更多信息,请参阅 Ruby 版本。
- Rails 堆栈
-
默认 Rails 堆栈为包含 Phusion Passenger
的 Apache2 。您还可以使用包含 Unicorn 的 Nginx 。 注意
如果您使用 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-
对 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 应用程序
-
创建包含 Rails App Server 层的堆栈 (Apache/Passenger 作为 Rails 堆栈),将一个全天候实例添加到层,然后启动实例。
-
当实例处于联机状态后,将一个应用程序添加到堆栈,并指定以下设置:
-
Name - 您喜欢的任何名称;示例中使用的是
PhotoPoll
。AWS OpsWorks Stacks 使用此名称进行显示,并生成一个短名称供内部使用,并在堆栈配置和部署属性中标识应用程序。例如, PhotoPoll 简称是 photopoll。
-
App type - Ruby on Rails。
-
Rails environment - 可用的环境由应用程序决定。
示例应用程序有三个:
development
、test
和production
。在此示例中,将环境设置为development
。查看每个环境的描述的示例代码。 -
Repository type -任何受支持的存储库类型。在此示例中指定
Git
-
存储库 URL-应从中部署代码的存储库。
在本示例中,将设置URL为
git://github.com/awslabs/opsworks-demo-rails-photo-share-app
。
对其余设置使用默认值,然后单击 Add App 创建应用程序。
-
-
将应用程序部署到 Rails App Server 实例。
-
部署完成后,转到 实例 页面,然后单击 Rails App Server 实例的公有 IP 地址。您将看到以下内容: