AWS Elastic Beanstalk に Rails を構築する手順。

## 概要
AWS の PaaS 、Elastic Beanstalk に Rails を構築する手順のメモ。公式はちょっとわかりづらいので。ちなみにMacを使用してます。

公式
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Ruby.html

2014/10/13 編集
ebからElasticBeanstalkの環境を作るとEC2にSSH接続できなかったので、先にWeb GUIから環境を作成する方法に変更する。

## 前準備
##### AWS Elastic Beanstalk Command Line Tool をインストールする
Homebrew からでもインストールできます。
http://aws.amazon.com/code/6752709412171743


## Hello を表示する Rails プロジェクトを作成する
Rails プロジェクト下記で作成
http://qiita.com/jr_qrank/items/cf591a3e258cffecd980

railsApp
という Rails プロジェクトを作成し、hello コントローラ作成する。

```
$ bundle exec rails g controller hello index
```
config/routes.rb を編集する。

```
root 'hello#index'
```

Gitリポジトリを作成する

```
$ git init
$ git add .
$ git commit -m 'initial commit'
```

## IAMの設定
Elastic Beanstalk にデプロイするために、
 * Access Key ID
 * Secret Access Key
が必要で、AWS の経験がないとなんだよそれ？となります。上記２つは AWS の IAM から作成します。

IAM = Identity and Access Management

1. AWS にログインし、IAM->Users で、新しいユーザを作成する。
2. Access Key ID と Secret Access Key が取得できる。
3. 再度 IAM->Users をひらき、作成したユーザを選択する。
4. ユーザーの Permissions を設定する。
 * 面倒なので Admin にしちゃいました

## EC2 で Key Pair を作成
SSH 接続するために必要な Key Pair を作成し、.pemファイルを保存します。

1. AWS にログインし EC2->Key Pairs を選択する。
2. Create Key Pair で新しい Key を作成する。
3. .pem ファイルをダウンロードする。

## AWS の Elastic Beanstalk Web GUI からアプリケーションを作成する

1. Web GUI で Create New Application を選択し、新しい Elastic Beanstalk 環境を作成する。
2. Environment Type は、Web Server/Ruby/Load Balancing で。
3. Application Version はとりあえず Sample Application を選択。
4. Environment Information はお好みで。
5. Additional Resources では RDS 作っちゃいましょう。
6. Configuration Details で先に作った Key Pair を選択する！←重要
7. RDS Configuration で、user name / password を入力。
8. Launch!!

ここで入力した Application Name と、Environment Information の名前を eb で Deploy する際に使用します。

## AWS Elastic Beanstalk の設定を行う
Railsプロジェクトのディレクトリで

```
$ eb init
```

を実行すると、対話式で設定を行える。Access Key ID や Secret Access Key の入力を求められます。
Select a solution stack. で、1 or 0 しか表示されないとき、IAM の Permission 設定ミスです。
Application Name や Environment Name は上記で作成した Elastic Beanstalk と同じものを入力します。RDS の username と password も同様です。

## Rails アプリをデプロイする

```
$ eb start
```

最新のgitコミットログに日本語が混じってると、 ```Failed to create the AWS Elastic Beanstalk application version``` と怒られる可能性あり。

eb start を実行すると, EC2, RDSなどのインスタンスが生成されます。

### SECRET_KEY_BASE の設定
まずは rake コマンドでキーを生成します。

```
$ bundle exec rake secret
55a8754790b51....(略
```

AWS の Elastic Beanstalk を開き、作成したRailsアプリケーションを選択します。Configuration->SoftwareConfiguration で、

Property Name : SECRET_KEY_BASE
Property Valule : \<rake secret で生成した文字列>

を設定します。
ちなみに development, text, production の設定も RACK_ENV で行います。

## Rails アプリを更新する

```
$ git commit -m "alphabet only commit message"
$ eb deploy
```

## 停止/削除

```
$ eb stop #停止
$ eb delete #削除
```

## EC2 に SSH で接続する

EC2 の GUI から Connect を選ぶと接続方法でます。/var/app/current が Deploy 先です。

## 参考リンク

ElastiCacheのmemcachedとEC2上のrailsとdalli-elasticacheを使ってキャッシュ管理する
http://joppot.info/2014/07/15/1754

RDS DBパラメータの変更
http://qiita.com/web_se/items/3f07ddad69030f27d8a9

ElastickBeanstalkの.configファイル
http://www.infoq.com/jp/news/2012/11/elastic-beanstalk-config-files

RDS MySQL5.5.33 で『utf8mb4』(4バイト対応UTF-8文字コードセット)を試してみた
http://dev.classmethod.jp/cloud/aws/utf8mb4-on-rds-mysql/