概要
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 の経験がないとなんだよそれ?となります。上記2つは AWS の IAM から作成します。
IAM = Identity and Access Management
- AWS にログインし、IAM->Users で、新しいユーザを作成する。
- Access Key ID と Secret Access Key が取得できる。
- 再度 IAM->Users をひらき、作成したユーザを選択する。
- ユーザーの Permissions を設定する。
- 面倒なので Admin にしちゃいました
EC2 で Key Pair を作成
SSH 接続するために必要な Key Pair を作成し、.pemファイルを保存します。
- AWS にログインし EC2->Key Pairs を選択する。
- Create Key Pair で新しい Key を作成する。
- .pem ファイルをダウンロードする。
AWS の Elastic Beanstalk Web GUI からアプリケーションを作成する
- Web GUI で Create New Application を選択し、新しい Elastic Beanstalk 環境を作成する。
- Environment Type は、Web Server/Ruby/Load Balancing で。
- Application Version はとりあえず Sample Application を選択。
- Environment Information はお好みで。
- Additional Resources では RDS 作っちゃいましょう。
- Configuration Details で先に作った Key Pair を選択する!←重要
- RDS Configuration で、user name / password を入力。
- 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/