WSGI(Web Server Gateway Interface)のイメージ画像

WSGI(Web Server Gateway Interface)の役割

  • 公開日:2018/03/29
  • 更新日:2018/10/19
  • 投稿者:n bit

Djangoをサーバにデプロイするときに必ず必要となってくるWSGI(Web Server Gateway Interface)の設定があります。WSGIの役割がそもそもどのようなものか知っていないと設定の時に色々と迷ってしまいますので今回基礎的なところの役割をまとめてみました。

  • Python
  • Django

この記事は約 分で読めます。(文字)

WSGI(Web Server Gateway Interface)

PythonにはPythonベースで開発されたWebアプリケーションのフレームワークが数多く存在します。現在私がよく利用していますDjangoもそのWebアプリケーションフレームワークの1つです。

サーバ上ではWebサーバとWebアプリケーションフレームワークとの間に何らかのやりとりが必ず発生します。このやりとりの方法がWebアプリケーションフレームワークごとに違いがあり、Webサーバとフレームワークの組み合わせによって利用できなかったり制限があったりすることが問題となっていました。

この問題を解決するために、WebサーバとWebアプリケーションフレームワークをつなぐ共通の汎用的に使えるインターフェースが必要となり、PythonでWSGI(Web Server Gateway Interface)が考案されました。

読み方は「ウィズギー」です。

WSGI(Web Server Gateway Interface)が定義されたことによりWebサーバとWebアプリケーションフレームワークの組み合わせが柔軟に設定できるようになりました。

2種類のWSGI (Web Server Gateway Interface)

WSGIの動作には2種類のWSGIが必要になります。1つはWebサーバー側、そしてもう一つはWebアプリケーションフレーム側に必要です。双方のWSGIが汎用的なインターフェースでリクエスト情報・レスポンスヘッダ・レスポンス本文等をやりとりすることによって稼働します。

この仕組みのおかげでWSGIに対応したWebサーバーと、WSGIをサポートするアプリケーションフレームワークであれば組み合わせることが可能になります。

WSGIをサポートするWebアプリケーションフレームワークの一例

  • Django
  • Bottle
  • Flask
  • Pyramid
  • Google App Engine

WSGIをサポートするサーバの一例

  • Gunicorn
  • uWSGI
  • Apacheモジュール (mod_wsgi、mod_python等)

Djangoをnginx上で利用する場合はよくGunicornを選択したりします。

  • VPS(CentOS7)+ nginx + Gnicorn + Django

といった感じで利用します。

Note

Gunicorn

GunicornはPython製の軽量のWSGI サーバーです。

今日のdot

WSGI(Web Server Gateway Interface):「ウィズギー」とはサーバとPythonベースで開発されたアプリケーションフレームワークの双方を汎用的なインターフェースでやり取りするために考案された定義です。

WSGIはサーバ側とアプリケーションフレーム側双方に必要で、それぞれWSGIをサポートしているものを選択することで柔軟な組み合わせが可能となります。