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

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

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

重要

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

注記

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

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

インストール: 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ために を無効にすることをお勧めします。詳細については、「SSLv3 Rails サーバーの無効化」を参照してください。

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「」を参照してくださいカスタム の使用 JSONdatabase.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 アプリをデプロイするには
  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 を指定します。

    • リポジトリ URL – コードをデプロイするリポジトリ。

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

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

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

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

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