翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Rails App Server AWS OpsWorks スタックレイヤー
重要
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post
注記
このレイヤーは、Linux ベースのスタックでのみ使用できます。
Rails アプリケーションサーバーレイヤーは、Rails AWS OpsWorks アプリケーションサーバーとして機能するインスタンスの設計図を提供する スタックレイヤーです。
インストール: AWS OpsWorks スタックはインスタンスのパッケージインストーラを使用して、サーバーパッケージをデフォルトの場所にインストールします。Apache/Passenger のインストールの詳細については、「Phusion Passenger
[Add Layer] ページには、以下の設定オプションがあります。いずれもオプションです。
- Ruby Version
-
アプリケーションで使用される Ruby バージョン。デフォルト値は 2.3 です。
[:opsworks][:ruby_version] 属性を上書きすることで、目的の Ruby のバージョンを指定することもできます。
注記
AWS OpsWorks スタックは、レシピとインスタンスエージェントで使用される別の Ruby パッケージをインストールします。詳細については、「Ruby のバージョン」を参照してください。
- Rails Stack
-
デフォルト Rails スタックは、Apache2
と Phusion Passenger です。また、Nginx と Unicorn を使用することもできます。 注記
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
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 スタックは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 リポジトリから Rails アプリケーションの Ruby をデプロイするには
-
Rails スタックとして Apache/Passenger を使用した Rails アプリケーションサーバーレイヤーでスタックを作成し、その層に 24/7 インスタンスを追加して、開始します。
-
インスタンスがオンラインになってから、スタックにアプリケーションを追加し、以下の設定を指定します。
-
Name (名前) – 任意の名前。この例では
PhotoPoll
を使用しています。AWS OpsWorks スタックは表示目的でこの名前を使用し、内部使用のための短縮名を生成し、スタック設定およびデプロイ属性でアプリケーションを識別します。たとえば、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] をクリックしてアプリケーションを作成します。
-
-
Rails アプリケーションサーバーインスタンスにアプリケーションをデプロイします。
-
デプロイが完了したら、[Instances] (インスタンス) ページに移動して、Rails アプリケーションサーバー インスタンスのパブリック IP アドレスをクリックします。次のように表示されます。
