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

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

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

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは、通常どおり OpsWorks コンソール、API、CLI、および CloudFormation リソースを使用できます。その時点で廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、「AWS OpsWorks Stacks サポート終了に関する FAQ」および「AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行」を参照してください。

注記

このレイヤーは、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 OpsWorksdatabase.yml 属性からの情報を使用して新しい deploy ファイルが Stacks によって作成されます。アプリケーションにMySQL または Amazon RDS のインスタンスをアタッチすると、AWS OpsWorks スタックは deploy 属性に接続情報を追加するため、database.yml には自動的に正しい接続データが含まれます。

アプリケーションにデータベースがアタッチされていない場合、デフォルトでは 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-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 アドレスをクリックします。次のように表示されます。