アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

Unicorn と Nginx と Rails の関係

皆さん。初めまして。最近アクトインディに入社した namikata です。

  • エンジニア職未経験
  • 30歳を超えている

といったプロフィールを持っていますが、チャレンジするのに年齢は関係ありませんの精神で、これから頑張ってエンジニアライフを送っていきたいと思います。

子供とお出かけ情報「いこーよ」 は、Nginx + Unicorn + Rails で構成されています。勉強していて Nginx と UnicornRails の関係性が自分の中でちょっと不明瞭だったので、調べた結果をまとめてみました。間違ってたらゴメンなさい。

各役割は以下になります。

名称 役割
Unicorn Rack Webサーバー
Nginx Webサーバー
Rails フレームワーク

Rack は WSGI に影響されて開発された Ruby におけるサーバとアプリケーション/フレームワーク間のインターフェースの役割を果たすライブラリ 第23回 Rackとは何か(1)Rackの生まれた背景

Unicorn は Rack Webサーバー の分類で、Rack と Webサーバーの機能を合わせて持つ。Webrickも同様。ただ、Webサーバーとしてのレスポンス処理はApacheやNginxに劣る。Railsを公開するときは、Unicorn + Rails の環境で公開することは可能だが、モチはモチ屋の発想で Nginx + Unicorn + Rails の構成を取るのが一般的。Nginx単体では、Rackの機能をサポートしていない為、Nginx + Rails ではアプリケーションは動作しない。

以上です。これからも勉強した内容はまとめていきたいと思いますので、どうか宜しくお願いします。

参考

Rack Webサーバ(Rack Web Server)は、RubyアプリケーションとWebサーバをつなぐための中間サーバ、として扱われることが多い。通常のWebサーバはRackのような機能をサポートしていないが、Rack Webサーバを挟むことで、RubyアプリケーションなどをWebサーバ上で動作させることができる。Rack Webサーバ単体でも機能するにはするみたいだけど、Apacheなどの既存のWebサーバはレスポンスの処理がうまいので、それらと組み合わせて使うことが多いらしい。 ApacheとNginxとPassengerとUnicornの違い【すごい初心者向け】

Rack はWebサーバー(Nginx)とフレームワークRails)の間を取り持つライブラリ 5分でわかるRack