Rails App Server AWS OpsWorks スタックレイヤー - AWS OpsWorks

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

Rails App Server AWS OpsWorks スタックレイヤー

重要

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

注記

このレイヤーは、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ために を無効にすることをお勧めします。詳細については、「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.confHTTPS「サーバーの設定」を参照してください。組み込みテンプレートのオーバーライドの詳細については、「カスタムテンプレートの使用」を参照してください。

データベースへの接続

アプリケーションをデプロイすると、 AWS OpsWorks スタックはアプリケーションのdeploy属性からの情報を使用して新しいdatabase.ymlファイルを作成します。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、「」を参照してくださいカスタム の使用 JSONdatabase.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 を指定します。

    • リポジトリ 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.