#はじめに
普段何気なく使っていたコマンド「rails s」。このコマンドにより、何がどう動いていたのか改めて認識したので、書き記します。
補足
rails sはローカルサーバーを立ち上げるコマンドです。
#目次
1.Webサーバーとアプリケーションサーバー
2.ローカル環境
3.本番環境
#1.Webサーバーとアプリケーションサーバー
処理の負荷を分散する(高速処理)ため、サーバーは機能ごとに分業されている。
Webサーバー
クライアントサイドからのリクエストを全て受ける。リクエストの内容が静的(HTMLやCSS)な場合、Webサーバーがブラウザ(クライアント)へレスポンスを返す。リクエストの内容が動的(データベースから情報を検索する等)な場合、アプリケーションサーバーへリクエストを渡す。
アプリケーションサーバー
Webサーバーから渡されたリクエストを受け取り、対応するコントローラーのアクションを実行する。その後、処理結果をWebサーバーに返す。
#2.ローカル環境
ターミナルでrails s と入力するとサーバーが立ち上がる。そのときターミナルにはpumaが表示されている。これはRails用のアプリケーションサーバーであり、Webサーバーとの分業化されていない。
=> Booting Puma
=> Rails 6.0.3.4 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.6 (ruby 2.6.5-p114), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
#3.本番環境
本番環境において、Webサーバーとアプリケーションサーバーを分業化する。理由は先述した通り、アクセスが集中する等のサーバー負荷対策のためである。Nginx(Webサーバー)やUnicorn(アプリケーションサーバー)等を組み合わせ、本番環境を構築する。
参考ページ
なぜrailsの本番環境ではUnicorn,Nginxを使うのか? ~ Rack,Unicorn,Nginxの連携について ~【Ruby On Railsでwebサービス運営】
以上