

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

# Rails App Server OpsWorks スタックレイヤー
<a name="workinglayers-rails"></a>

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

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

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

**インストール**: OpsWorks スタックはインスタンスのパッケージインストーラを使用して、サーバーパッケージをデフォルトの場所にインストールします。Apache/Passenger のインストールの詳細については、「[Phusion Passenger](https://www.phusionpassenger.com/)」を参照してください。ログ記録の詳細については、「[ログファイル](http://httpd.apache.org/docs/2.2/logs.html)」を参照してください。Nginx/Unicorn のインストールの詳細については、「[Unicorn](http://unicorn.bogomips.org/)」を参照してください。

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

**Ruby Version**  
アプリケーションで使用される Ruby バージョン。デフォルト値は 2.3 です。  
[`[:opsworks][:ruby_version]` 属性を上書きする](workingcookbook-attributes.md)ことで、目的の Ruby のバージョンを指定することもできます。  
OpsWorks スタックは、レシピとインスタンスエージェントで使用する別の Ruby パッケージをインストールします。詳細については、「[Ruby のバージョン](workingcookbook-ruby.md)」を参照してください。

**Rails Stack**  
デフォルト Rails スタックは、[Apache2](http://httpd.apache.org/) と [Phusion Passenger](https://www.phusionpassenger.com/) です。また、[Nginx](http://nginx.org/en/) と [Unicorn](http://unicorn.bogomips.org/) を使用することもできます。  
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](http://rubygems.org/) バージョンは 2.5.1 です。

**[Install and Manage Bundler (Bundler のインストールと管理)]**  
[Bundler](http://gembundler.com/) をインストールおよび管理するかどうかを選択できます。デフォルト値は [**Yes**] です。

**[Bundler version (Bundler のバージョン)]**  
デフォルトの Bundler バージョンは 1.12.5 です。

**Custom security groups**  
この設定は、組み込み OpsWorks の スタックセキュリティグループをレイヤーに自動的に関連付けないことを選択した場合に表示されます。レイヤーに関連付けるセキュリティグループを指定する必要があります。詳細については、「[新しいスタックを作成する](workingstacks-creating.md)」を参照してください。

**[Elastic Load Balancer]**  
レイヤーのインスタンスに Elastic Load Balancing のロードバランサーをアタッチできます。

カスタム JSON またはカスタム属性ファイルを使用して、一部の設定を変更できます。詳細については、「[属性の上書き](workingcookbook-attributes.md)」を参照してください。オーバーライドできる Apache、Nginx、Phusion Passenger、および Unicorn 属性の一覧については、「[組み込みクックブックの属性](attributes-recipes.md)」を参照してください。

**重要**  
Ruby on Rails アプリケーションが SSL を使用する場合は、[CVE-2014-3566](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566) で説明されている脆弱性に対応するために、可能であれば SSLv3 を無効にすることをお勧めします。詳細については、「[Rails サーバーに対する SSLv3 の無効化](#workinglayers-rails-sslv3)」を参照してください。

**Topics**
+ [Rails サーバーに対する SSLv3 の無効化](#workinglayers-rails-sslv3)
+ [データベースへの接続](#workinglayers-rails-db)
+ [Rails アプリケーションの Ruby のデプロイ](#workinglayers-rails-deploy)

## Rails サーバーに対する SSLv3 の無効化
<a name="workinglayers-rails-sslv3"></a>

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 の無効化](layers-java.md#layers-java-sslv3) 設定を更新します。

**Nginx と Unicorn**  
Nginx サーバーの `ssl_protocols` ファイルに明示的な `nginx.conf` ディレクティブを追加します。SSLv3 を無効にするには、組み込みの [[nginx cookbook's](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/nginx) (nginx クックブック) の `nginx.conf.erb` テンプレートファイルをオーバーライドします。そのテンプレートファイルを使用して、Rails アプリケーションサーバー レイヤーの Setup レシピで `nginx.conf` が作成され、以下のディレクティブが追加されます。  

```
ssl_protocols TLSv1.2;
```
`nginx.conf` の設定方法の詳細については、「[HTTPS サーバーの設定](http://nginx.org/en/docs/http/configuring_https_servers.html)」を参照してください。組み込みテンプレートのオーバーライドの詳細については、「[カスタムテンプレートの使用](workingcookbook-template-override.md)」を参照してください。

## データベースへの接続
<a name="workinglayers-rails-db"></a>

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

アプリにデータベースがアタッチされていない場合、デフォルトでは、 OpsWorks Stacks は`deploy`属性に接続情報を追加せず、 を作成しません`database.yml`。別のデータベースを使用する場合は、カスタム JSON を使用して、接続情報と共にアプリケーションの `deploy` 属性にデータベース属性を追加できます。属性はすべて の下にあり`["deploy"]["appshortname"]["database"]`、*appshortname* はアプリケーションの短縮名であり、 OpsWorks スタックはアプリケーション名から生成します。カスタム JSON で指定する値は、デフォルト設定をオーバーライドします。詳細については、「[アプリケーションの追加](workingapps-creating.md)」を参照してください。

OpsWorks スタックは、次の[`[:...][:database]`](attributes-json-deploy.md#attributes-json-deploy-app-db)属性値を に組み込みます`database.yml`。必要な属性は特定のデータベースによって異なりますが、`host`属性が必要です。そうしないと 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 の使用](workingstacks-json.md)」を参照してください。`database.yml` を作成するために使用したテンプレート (`database.yml.erb`) を見るには、[組み込みクックブックリポジトリ](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.4/rails/templates/default)にアクセスしてください。

## Rails アプリケーションの Ruby のデプロイ
<a name="workinglayers-rails-deploy"></a>

サポートされている任意のリポジトリから Rails アプリケーションの Ruby をデプロイすることができます。以下に、Apache/Passenger Rails スタックを実行しているサーバーにサンプルの Rails アプリケーションの Ruby をデプロイする方法を示します。サンプルコードはパブリックの GitHub リポジトリに保存されますが、基本的な手順は、サポートされている他のリポジトリでも同じです。アプリケーションの作成およびデプロイの方法の詳細については、「[アプリケーション](workingapps.md)」を参照してください。詳細なコメントが含まれているサンプルコードを表示するには、[https://github.com/awslabs/opsworks-demo-rails-photo-share-app](https://github.com/awslabs/opsworks-demo-rails-photo-share-app) にアクセスしてください。

**GitHub リポジトリから Rails アプリケーションの Ruby をデプロイするには**

1. Rails スタックとして Apache/Passenger を使用した Rails アプリケーションサーバーレイヤーで[スタックを作成](workingstacks-creating.md)し、その層に[ 24/7 インスタンスを追加](workinginstances-add.md)して、[開始します](workinginstances-starting.md)。

1. インスタンスがオンラインになってから、スタックに[アプリケーションを追加](workingapps-creating.md#workingapps-creating-general)し、以下の設定を指定します。
   + **Name** (名前) – 任意の名前。この例では `PhotoPoll` を使用しています。

     OpsWorks スタックは、表示目的でこの名前を使用し、内部使用のための短縮名を生成し、[スタック設定およびデプロイ属性](workingcookbook-json.md)でアプリケーションを識別します。たとえば、PhotoPoll の短縮名は photopoll です。
   + **App type** (アプリケーションタイプ) –**Ruby on Rails** (Ruby on Rails)。
   + **Rails environment** (Rails 環境) – 使用可能な環境はアプリケーションによって決定されます。

     この例のアプリケーションには、**development**、**test**、**production** の 3 つの環境があります。この例では、環境を **development** に設定します。各環境の説明については、サンプルコードを参照してください。
   + **Repository type** (リポジトリタイプ) – サポートされている任意のリポジトリタイプ。この例では `Git` を指定します。
   + **Repository URL** (リポジトリの URL) – コードのデプロイ元となるリポジトリ。

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

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

1. Rails アプリケーションサーバーインスタンスに[アプリケーションをデプロイ](workingapps-deploying.md)します。

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

![\[Congratulatory message for deploying first app with AWS OpsWorks, with stylized logo.\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/rails_example.png)
