最初にWEBアプリケーションのおさらい
WEBアプリケーションの構成
WEBアプリケーションは主に、
・WEBサーバー
・アプリケーションサーバー
・DBサーバー
これらが組み合わさって完成します。このサーバーって言葉が分かりづらいですよね。
サーバーは主に以下の2つの言い回しがあるようです。
・コンピュータとしてのサーバ
・ソフトウェアとしてのサーバ(ミドルウェア)
画面のない処理専用のPCをサーバーといったりしますが、あれはコンピュータとしてのサーバですね。
あと、VPS(Virtual Private Server)というサービスの名前の中にも、サーバーという単語が使われています。VPSは仮想サーバーをレンタルするサービスですが、これもコンピュータとしてのサーバーですね。
そして、今回構築していくWEBサーバやアプリケーションサーバ、DBサーバは、OSの上にミドルウェアとして構築していく、ソフトウェアとしてのサーバです。このようなミドルウェアには、他にもファイルサーバやメールサーバがあります。
ちなみに、一番上の層の"アプリケーション"というのは、パソコン上で機能を使えるようにしたものです。ChromeとかPowerPointとか。このアプリケーションはスマホアプリやデスクトップアプリといった意味合いが強くて、WEBアプリケーションとは違う意味なんですよね。ややこしい。
長々と書きましたが、WEBアプリケーションの構築は、WEBサーバ、アプリケーションサーバ、DBサーバの3つのミドルウェア部分を構築して、連携させていくようなイメージになります。
WEBアプケーション構成手順
・WEBサーバー → Nginx
・アプリケーションサーバー → Django(gunicorn)
・DBサーバー → PostgreSQL
それぞれのサーバには、上記のツール・サービスを使っていきます。今回はこれらをAWS EC2上に構成していきます。
順番的には、
・PostgreSQLをスタートさせる
→ DBサーバーが立ち上がります
・gunicornを起動する
→ Djangoフレームワークがアプリケーションサーバーとして立ち上がります。Djangoでいい感じに設定しておくと、DBサーバーと紐付けされます。
・Nginxを起動させる
→ WEBサーバーが立ち上がります。あらかじめ設定ファイルにいい感じに記述すると、アプリケーションサーバーと紐付けされます。
####gunicornについて
Djangoフレームワークは、WSGIという仕様に則って開発されています。
これをアプリケーションサーバとして動作させることができるのが、
・gunicorn
・uwsgi
といったものになります。今回は、uwsgiではなくgunicornを使っていきます。