記事を書く目的
Railsでつくったアプリをデプロイしたときの構成として、ミドルウェアにNginxとUnicornを使用しました。
なぜこれらを本番環境で使用するのか調べていて、まとめたいなと思ったのでメモ。
ミドルウェア
osとアプリケーションの間に入って働くプログラムのこと。
- Webサーバー(Nginx)
- アプリケーションサーバー(Unicorn)
のこと。
こちらの記事のとおりに構成を実施。
(デプロイ編②)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで - Qiita
Webサーバー, アプリケーションサーバーの役割
-
Webサーバー(Nginx)
静的コンテンツを返す役割を持つもの。
誰がみても同じ内容のもの。
誰かの記事を見るなど、誰がみてもその人の記事の内容は同じなのでそれを表示させるのには、Webサーバーだけで十分。 -
アプリケーションサーバー(Unicorn)
動的コンテンツを返す役割を持つもの。
各ユーザーにより、処理が異なるもの。
ログインだったり、記事を投稿する場合だったりデータベースとのやり取りが必要なもの。
RailsにはPumaがある
Rails5からはWebサーバーの役割をもつPumaが標準装備されているとのこと。
ということはPuma + Nginx でもいいのではないか?と思っていたらPumaとUnicornを比較した記事がありました。
↓↓
Pumaの本当の力を引き出す - Qiita
結果的にデフォルトのPumaは貧弱なため、Unicornを使った方が処理がスムーズなるけど、ポートフォリオくらいならPumaでも問題はないのかなと。
つまり
デフォルトのPumaは貧弱なので、Unicornを使う。
Unicornを使う場合、ドキュメントではNginxと組み合わせることを推奨しているため、Unicornを選んだ場合、webサーバも自然とNginxになる。