#Nginx+UnicornでRailsを動かすon Mac
RailsというよりRubyビギナーです。
ローカル環境ではWEBrickでもいいかなと思ったのですが、最終的にはそうもいかなくなると思うので、商用でもイケるWebサーバーを使ってみることにしました。
最初はとっつきやすそうなApache+Passengerな環境をつくろうと思ったのですが、全然上手く動かず挫折した(未だに困ってるので助けてください←)ので、勉強がてらGithubでも採用しているらしいNginx+Unicornな環境をMac(Mavericks)につくってみました。いまっぽい。
ですが、こちらもなかなか手こずったので手順をまとめておきます。
unicorn編
まずはgemでインストール。
(本当はbundleでインストールしたほうがいいのかな?)
$ gem install unicorn
次にunicornの設定ファイルを作成。
$ cd {RAILS_PROJECT_ROOT}
$ vi config/unicorn.rb
unicorn.rbの中身はこんな感じ。
rails_root = File.expand_path('../../', __FILE__)
worker_processes 2
working_directory rails_root
listen "#{rails_root}/tmp/unicorn.sock"
pid "#{rails_root}/tmp/unicorn.pid"
stderr_path "#{rails_root}/log/unicorn_error.log"
stdout_path "#{rails_root}/log/unicorn.log"
そして、デーモンとして起動。
$ unicorn_rails -c config/unicorn.rb -E development -D
特にエラーが出なければOK。
ちなみに停止したい時は以下で。
$ kill -QUIT `cat tmp/unicorn.pid`
unicornの設定は以上。
nginx編
まずは、インストール。
$ brew install nginx
そして、起動。
$ sudo nginx
http://localhost:8080
でアクセス出来ればOK。
次に設定ファイルを編集。(本当はApacheのバーチャルホスト設定ファイルとかと同じように別ファイルで管理したほうがよい)
$ cd /usr/local/etc/nginx
$ cp nginx.conf.default nginx.conf
$ cp nginx.conf nginx.conf.YYYYMMDD
$ vi nginx.conf
confファイルに以下を追記する。
パス等は適宜変更してください。
upstream unicorn {
# nginxとunicornの連携
# unicorn.rbで設定したunicorn.sockを指定
server unix:{RAILS_PROJECT_ROOT}/tmp/unicorn.sock;
}
server {
listen 8081;
server_name {PROJECTDOMAIN_FOR_LOCAL};
root {RAILS_PROJECT_ROOT}/public;
access_log /usr/local/var/log/nginx/{PROJECT_NAME}_access.log;
error_log /usr/local/var/log/nginx/{PROJECT_NAME}_error.log;
client_max_body_size 100m;
error_page 500 502 503 504 /500.html;
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://unicorn;
}
}
nginx再起動。
$ sudo nginx -s reload
nginxの設定は以上。
最終確認
http://{PROJECTDOMAIN_FOR_LOCAL}:8081
にアクセスしてRailsの初期画面が表示されていればOK!
というわけで、これからRails頑張ります。
参考サイト
rails + nginx + unicorn連携:
http://qiita.com/shinyashikis@github/items/ace49154f0c71c65b2c9
nginx + unicorn + Rails on Mac
http://archive.aerial.st/archive/2011/06/16/nginx-unicorn-rails-on-mac