翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Rails アプリケーションサーバー AWS OpsWorks スタックレイヤー
重要
- AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 にお問い合わせください。 AWS Support でのチーム AWS re:Post
注記
このレイヤーは、Linux ベースのスタックでのみ使用できます。
Rails アプリケーションサーバーレイヤーは AWS OpsWorks Rails アプリケーションサーバーとして機能するインスタンスの設計図を提供するスタックレイヤー。
インストール: AWS OpsWorks スタックは、インスタンスのパッケージインストーラを使用して、サーバーパッケージをデフォルトの場所にインストールします。Apache/Passenger のインストールの詳細については、「Phusion Passenger
[Add Layer] ページには、以下の設定オプションがあります。いずれもオプションです。
- Ruby Version
-
アプリケーションで使用される Ruby バージョン。デフォルト値は 2.3 です。
[:opsworks][:ruby_version] 属性を上書きすることで、目的の Ruby のバージョンを指定することもできます。
注記
AWS OpsWorks スタックは、レシピとインスタンスエージェントで使用される別の Ruby パッケージをインストールします。詳細については、「Ruby のバージョン」を参照してください。
- Rails Stack
-
デフォルト Rails スタックは、Apache2
と Phusion Passenger です。また、Nginx と Unicorn を使用することもできます。 注記
Nginx と Unicorn を使用する場合は、以下の例のように、アプリケーションの Gemfile に unicorn gem を追加する必要があります。
source 'https://rubygems.org' gem 'rails', '3.2.15' ... # Use unicorn as the app server gem 'unicorn' ...
- Passenger Version
-
Apache2/Passenger を指定した場合は、Passenger のバージョンを指定する必要があります。デフォルト値は 5.0.28 です。
- [Rubygems Version (Rubygems のバージョン)]
-
デフォルトの Rubygems
バージョンは 2.5.1 です。 - [Install and Manage Bundler (Bundler のインストールと管理)]
-
Bundler
をインストールおよび管理するかどうかを選択できます。デフォルト値は [Yes] です。 - [Bundler version (Bundler のバージョン)]
-
デフォルトの Bundler バージョンは 1.12.5 です。
- Custom security groups
-
この設定は、組み込み を自動的に関連付けないことを選択した場合に表示されます。 AWS OpsWorks セキュリティグループをレイヤーにスタックします。レイヤーに関連付けるセキュリティグループを指定する必要があります。詳細については、「新しいスタックを作成する」を参照してください。
- [Elastic Load Balancer]
-
レイヤーのインスタンスに、Elastic Load Balancing のロードバランサーをアタッチできます。
一部の設定は、カスタムJSONまたはカスタム属性ファイルを使用して変更できます。詳細については、「属性の上書き」を参照してください。オーバーライドできる Apache、Nginx、Phusion Passenger、および Unicorn 属性の一覧については、「組み込みクックブックの属性」を参照してください。
重要
Ruby on Rails アプリケーションが を使用している場合はSSL、可能であれば CVE-2014-3566
SSLv3 Rails サーバーの無効化
SSLv3 Rails サーバーの を無効にするには、レイヤーの Ruby バージョン設定を 2.1 以上に更新します。これにより、アプリケーションが使用するバージョンとして Ruby 2.1.4 以上がインストールされます。
-
レイヤーの [Ruby Version (Ruby のバージョン)] 設定を 2.1 以上に更新します。
-
Rails スタックの設定ファイルを以下のように更新します。
- Apache と Phusion Passenger
-
「
SSLProtocol
」で説明しているように、Apache Server のssl.conf
ファイルの Apache サーバーSSLv3での の無効化 設定を更新します。 - Nginx と Unicorn
-
Nginx サーバーの
ssl_protocols
ファイルに明示的なnginx.conf
ディレクティブを追加します。を無効にするにはSSLv3、Rails App Server レイヤーの Setup レシピが の作成に使用する組み込み nginx クックブックの nginx.conf.erb
テンプレートファイルを上書きしnginx.conf
、次のディレクティブを追加します。ssl_protocols TLSv1.2;
の設定方法の詳細については
nginx.conf
、「サーバーの設定HTTPS」を参照してください。組み込みテンプレートのオーバーライドの詳細については、「カスタムテンプレートの使用」を参照してください。
データベースへの接続
アプリケーションをデプロイすると、 AWS OpsWorks スタックは、アプリケーションのdeploy属性 からの情報を使用して新しいdatabase.yml
ファイルを作成します。My または Amazon SQLRDSインスタンスをアプリケーションにアタッチする場合、 AWS OpsWorks スタックは、 に正しい接続データdatabase.yml
が自動的に含まれるように、接続情報をdeploy
属性に追加します。
アプリにデータベースがアタッチされていない場合、デフォルトでは、 AWS OpsWorks スタックはdeploy
属性に接続情報を追加せず、 も作成しませんdatabase.yml
。別のデータベースを使用する場合は、カスタム を使用して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]
(文字列) – データベースユーザー名。
次の例は、短縮名が myapp であるアプリJSONのカスタム を示しています。
{ "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
) を見るには、組み込みクックブックリポジトリ
Rails アプリケーションの Ruby のデプロイ
サポートされている任意のリポジトリから Rails アプリケーションの Ruby をデプロイすることができます。以下に、Apache/Passenger Rails スタックを実行しているサーバーにサンプルの Rails アプリケーションの Ruby をデプロイする方法を示します。サンプルコードはパブリック GitHubリポジトリに保存されますが、基本的な手順は他のサポートされているリポジトリでも同じです。アプリケーションの作成およびデプロイの方法の詳細については、「アプリケーション」を参照してください。詳細なコメントを含むサンプルコードを表示するには、-https://github.com/awslabs/opsworks-demo-rails-photoshare-app
GitHub リポジトリから Ruby on Rails アプリをデプロイするには
-
Rails スタックとして Apache/Passenger を使用した Rails アプリケーションサーバーレイヤーでスタックを作成し、その層に 24/7 インスタンスを追加して、開始します。
-
インスタンスがオンラインになってから、スタックにアプリケーションを追加し、以下の設定を指定します。
-
Name (名前) – 任意の名前。この例では
PhotoPoll
を使用しています。AWS OpsWorks スタックは表示目的でこの名前を使用し、内部使用のために短い名前を生成し、スタック設定およびデプロイ属性 でアプリケーションを識別します。例えば、 PhotoPoll 短縮名は photopoll です。
-
App type (アプリケーションタイプ) –Ruby on Rails (Ruby on Rails)。
-
Rails environment (Rails 環境) – 使用可能な環境はアプリケーションによって決定されます。
この例のアプリケーションには、
development
、test
、production
の 3 つの環境があります。この例では、環境をdevelopment
に設定します。各環境の説明については、サンプルコードを参照してください。 -
Repository type (リポジトリタイプ) – サポートされている任意のリポジトリタイプ。この例では
Git
を指定します。 -
リポジトリ URL – コードをデプロイするリポジトリ。
この例では、 を URL に設定します
git://github.com/awslabs/opsworks-demo-rails-photo-share-app
。
残りの設定にはデフォルト値を使用し、[Add App] をクリックしてアプリケーションを作成します。
-
-
Rails アプリケーションサーバーインスタンスにアプリケーションをデプロイします。
-
デプロイが完了したら、[Instances] (インスタンス) ページに移動して、Rails アプリケーションサーバー インスタンスのパブリック IP アドレスをクリックします。次のように表示されます。