OpsWorksでのRailsアプリのデプロイ手順(2)

OpsWorksでのStack、アプリケーションサーバーレイヤーの作り方については前の記事を参照してください。
http://d.hatena.ne.jp/seika_m/20150911


Railsアプリを用意します。
 ※参考 MacでのRuby開発環境の構築手順 http://d.hatena.ne.jp/seika_m/20150713
 ※参考 DB(SQLite3)を使うシンプルなRailsアプリの作り方 http://d.hatena.ne.jp/seika_m/20150912


それとGitHub のアカウントを用意してください。
https://github.com/
 ※参考 GitHubの使い方 http://d.hatena.ne.jp/seika_m/20150906


Gemfileには以下のGemが必要です。
gem 'therubyracer', platforms: :ruby
gem 'unicorn'
gem 'mysql2', '~> 0.3.16'


※はまりポイント1
これら3つのgemファイルが無い場合、デプロイに失敗します。



AWSにログインします。
OpsWork の Layers を選択します。そして、

  1. Layer を選択します。



Layer type にMySQL を選択します。
passwordが自動的に表示されるのでメモ帳などに保存します。
Add Layerボタンを押下します。


MySQL レイヤーが追加されました。
次にAdd instance を選択します。



そのままAdd instance ボタンを押下します。



Start を選択してインスタンスを起動します。
インスタンスの起動するまで10分ぐらいかかります。他の画面に移動しても大丈夫です。)



次にAdd an app を選択します。



Name にアプリの名前を入力します
Data source type に OpsWorks を選択します
Database instance に先ほどのインスタンスを選択します
Database name にDBの名前を入力します。


※はまりポイント2
異なるアプリ(異なるRepository URLを参照するアプリ)を使う場合、
異なるName、異なるDatabase name を入力して下さい。そうしないとデプロイに失敗します。



画面をスクロールし、
Repository type に Git を選択します。
Repository URL にはアプリのGitHubのURLをセットします。ここでは
https://github.com/fumio-shimamura/railsbase2.git
をセットします。
Branch/Revision にはブランチ名をセットします。ここではmasterをセットします。
Enviroment Variables のKEY に SECRET_KEY_BASE
VALUE に任意の値をセットし、Protected value のチェックを入れます。
(KEYの値は config/secrets.yml の中にある値を指しています。)
VALUEの値は rake secret で生成した値などを入力します。)
Save ボタンを押下します。



Deployを選択します。



Migrate database を Yes にします。
Deploy ボタンを押下します。
(Deploy 完了までは数分かかります。)



Instances のページの Public IP を選択します。



起動した事を確認できます。




以上です。




補足1:
はまりポイント1、2について


以下のようなエラーメッセージが表示されます。

Error executing action `deploy` on resource 'deploy[/srv/www/myapp]'

(中略)

INFO: Running queued delayed notifications before re-raising exception
ERROR: Running exception handlers
ERROR: Exception handlers complete

補足2:
rails new しただけのアプリをデプロイした場合、デプロイは成功しますがページには
We're sorry, but something went wrong.
が表示されてしまします。
アプリのpublicフォルダ(favicon.icoが入っているフォルダ)にindex.htmlを追加してください。