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 を選択します。そして、
- Layer を選択します。
Layer type にMySQL を選択します。
passwordが自動的に表示されるのでメモ帳などに保存します。
Add Layerボタンを押下します。
MySQL レイヤーが追加されました。
次にAdd instance を選択します。
Start を選択してインスタンスを起動します。
(インスタンスの起動するまで10分ぐらいかかります。他の画面に移動しても大丈夫です。)
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 ボタンを押下します。
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を追加してください。