appサーバ(Rails)周りの準備
appサーバ(Rails)周りの準備
アプリそのものはプログラマーさんが制作していて、私のほうでは作ったアプリをサーバ上で動かす環境とデプロイ周りを担当します。 以前にもRails環境のサーバをいくつか構築したことがあり、過去を思い出してみると、
こんな流れでやってました。今回も「何か違うものでやりたい!」と思ってnginx + Rubinius + Puma
あたりに目をつけたのですが、軽くアプリを動かした時点で色々と動かなかったので、すぐに撤退してNginx+Unicornに戻りました。
Rubyの実装は、rbenvでRuby2.1(立ち上げ最初は2.0)をビルドしてそれを使います。 実はappサーバの中にもnginxを建ててnginxとunicorn間はUnixドメインソケット通信するようにします。 上流にnginx、ELBがいるのにapp内にもnginx建てるのも野暮ったいのですが、app内のnginxで何か制御したい場合があるかもということで立ち上げます。
アプリが起動するまでにやった作業の流れは以下の感じです。(事前にrbenvでRuby2.1が動いてるとします)
rbenv、nginx、Unicornのセットアップは参考の記事がたくさんありますのでここでは書きません。
bundlerでのgem管理が基本ですが、bundlerとeyeはgem install
でいれておきます。
ソースをgitからチェックアウトできるようにする
- appサーバのec2-userの公開鍵をgitosisに登録する。
環境変数を設定する
- RAILS_ENVとか
デプロイする
- 手元のローカルマシンから
bundle exec cap staging deploy
unicorn起動する
- 上のデプロイのタスクに含まれている
プロセスを確認する、ブラウザで見てみる
- psしたりログ見たり、ブラウザでたたいてみたり。。
特に書くことがありませんでした^^; デプロイ関連の記事で色々書くことになると思います。 環境変数の設定は、この案件だけでやってそうなことなので書いておきます。 環境変数セットにEC2のUserDataを使用しています。マシン起動時に下記の変数がされます (UserData自体の設定はインスタンスを作るときに下記のパラーメータを与えてやってます)
user data
RAILS_ENV=staging SERVER_ROLES=staging-app STAGE=staging