Rails アプリケーションサーバー AWS OpsWorks スタックレイヤー - AWS OpsWorks

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Rails アプリケーションサーバー AWS OpsWorks スタックレイヤー

重要

この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post または AWS Premium Support を通じて AWS Support チームにお問い合わせください。

注記

このレイヤーは、Linux ベースのスタックでのみ使用できます。

Rails アプリケーションサーバーレイヤーは、Rails アプリケーションサーバーとして機能するインスタンスの設計図を提供する AWS OpsWorks スタックレイヤーです。

インストール: AWS OpsWorks スタックは、インスタンスのパッケージインストーラを使用して、サーバーパッケージをデフォルトの場所にインストールします。Apache/Passenger のインストールの詳細については、「Phusion Passenger」を参照してください。ログ記録の詳細については、「ログファイル」を参照してください。Nginx/Unicorn のインストールの詳細については、「Unicorn」を参照してください。

[Add Layer] ページには、以下の設定オプションがあります。いずれもオプションです。

Ruby Version

アプリケーションで使用される Ruby バージョン。デフォルト値は 2.3 です。

[:opsworks][:ruby_version] 属性を上書きすることで、目的の Ruby のバージョンを指定することもできます。

注記

AWS OpsWorks スタックは、レシピとインスタンスエージェントで使用される別の Ruby パッケージをインストールします。詳細については、「Ruby のバージョン」を参照してください。

Rails Stack

デフォルト Rails スタックは、Apache2Phusion Passenger です。また、NginxUnicorn を使用することもできます。

注記

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 サーバーに対する SSLv3 の無効化

Rails サーバーに対して SSLv3 を無効にするには、レイヤーの [Ruby Version (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 を無効にするには、組み込みの [nginx cookbook's (nginx クックブック) の nginx.conf.erb テンプレートファイルをオーバーライドします。そのテンプレートファイルを使用して、Rails アプリケーションサーバー レイヤーの Setup レシピで nginx.conf が作成され、以下のディレクティブが追加されます。

ssl_protocols TLSv1.2;

nginx.conf の設定方法の詳細については、「HTTPS サーバーの設定」を参照してください。組み込みテンプレートのオーバーライドの詳細については、「カスタムテンプレートの使用」を参照してください。

データベースへの接続

アプリケーションをデプロイすると、 AWS OpsWorks スタックはアプリケーションのdeploy属性 からの情報を使用して新しいdatabase.ymlファイルを作成します。MySQL または Amazon RDS インスタンスをアプリケーションにアタッチすると、 AWS OpsWorks スタックは接続情報をdeploy属性に追加し、 に正しい接続データdatabase.ymlが自動的に含まれるようにします。

アプリケーションにデータベースがアタッチされていない場合、デフォルトでは、 AWS OpsWorks Stacks は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-photo-share-app にアクセスしてください。

GitHub リポジトリから Ruby on Rails アプリをデプロイするには
  1. Rails スタックとして Apache/Passenger を使用した Rails アプリケーションサーバーレイヤーでスタックを作成し、その層に 24/7 インスタンスを追加して、開始します

  2. インスタンスがオンラインになってから、スタックにアプリケーションを追加し、以下の設定を指定します。

    • Name (名前) – 任意の名前。この例では PhotoPoll を使用しています。

      AWS OpsWorks スタックは表示目的でこの名前を使用し、内部使用のために短い名前を生成し、スタック設定およびデプロイ属性 でアプリケーションを識別します。例えば、 PhotoPoll 短縮名は photopoll です。

    • App type (アプリケーションタイプ) –Ruby on Rails (Ruby on Rails)。

    • Rails environment (Rails 環境) – 使用可能な環境はアプリケーションによって決定されます。

      この例のアプリケーションには、developmenttestproduction の 3 つの環境があります。この例では、環境を development に設定します。各環境の説明については、サンプルコードを参照してください。

    • Repository type (リポジトリタイプ) – サポートされている任意のリポジトリタイプ。この例では Git を指定します。

    • Repository URL (リポジトリの URL) – コードのデプロイ元となるリポジトリ。

      この例では、この URL を git://github.com/awslabs/opsworks-demo-rails-photo-share-app に設定します。

    残りの設定にはデフォルト値を使用し、[Add App] をクリックしてアプリケーションを作成します。

  3. Rails アプリケーションサーバーインスタンスにアプリケーションをデプロイします。

  4. デプロイが完了したら、[Instances] (インスタンス) ページに移動して、Rails アプリケーションサーバー インスタンスのパブリック IP アドレスをクリックします。次のように表示されます。