インフラブログ

とあるWEBサイトのインフラを構築運用するメモ

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
  • RAILS_ENV - Rails内で色々参照される環境変数
  • SERVER_ROLES - このマシンがどういう役割をするのか(web,app,resque専用とか) 。このマシンではunicornを動かすのかresqueを動かすのかなどこの変数で決めます。
  • STAGE - $cap STAGE ~~で指定するステージと一致(大体STAGE=RAILS_ENVなのですが、もしかしたらstaging環境を2,3個作ったりするかもしれないので区別できるように変数を用意します)