Ruby on Rails + unicorn +ec2 + github + ansible 本番環境構築メモ

Ruby on Railsのファイルをそのままファイルアップロードしてはいけない

開発環境でRuby on Railsを構築したものをすべてgithubにプッシュするのはとても重くなるのでよくありません。特にvendor/bundleは重たいので本番環境で構築したほうがよいです。
Gemfileを更新したときは本番環境にも反映しそれ以外はansibleで簡単ファイルアップロードできるようにします。

railsのgitignore

railsのgitignoreサンプル

これぐらい削っておけばansible実行も軽くなりますし素早く本番リリースできます。

ansibleでec2にgithubでファイルをアップロードする

rolesを作ってansibleでgithubの内容をアップロードします。

rolesの/tasks/main.ymlの設定

ansibleを実行してec2にアップロードします。

これで開発者が修正する部分のファイルのみ本番サーバーへアップロードが完了しました。

ec2でrailsの設定をする

実行したコマンド

1. sudo su
2. vi .bash_profile

3. source .bash_profile
4. cd /var/www/html/example.com/
5. mkdir log
6. bundle install –path=vendor/bundle
7. bundle exec rake secret
8. export SECRET_KEY_BASE=bundle exec rake secret
9. bundle exec rake assets:precompile RAILS_ENV=production

説明

・2,3 rbenvを有効化しています。
・4 ansible実行しec2にファイルuploadしたディレクトリに移動します。
・5 logディレクトリはgitignoreで除外しているので本番で作成します。
・6 vendor/bundleを作成します。
・7 rake secretを生成します。
・8 7で生成したsecretを設定します。
・9 assetを設定します。
・最後にunicornを起動させれば完成です。
unicornの設定方法はWS+Nginx+Unicorn+Ruby on Railsでサーバー環境構築を参照してください。

一度本番環境を構築できればあとは
ansibleでファイルアップロードするだけなのでとても楽できます。