Webサーバーは主に静的コンテンツを提供。
ChatGPT
WSGI HTTPサーバーはWebサーバーとPythonアプリの通信を仲介。
住所変換機はChatGPTの勧めでPythonを使って開発している。
環境を推薦してもらう時、FlaskとGunicorn、Enveなどの聞いたこともない技術を利用するように提案され、言われたままにインストールして設定したが、意味がよくわかっていない。
それぞれ具体的に知りたいと思う。
![flask と gunicorn はそれぞれなんですか?わかりやすく簡潔に説明してください。](https://i0.wp.com/tenka.blog/wp-content/uploads/2024/06/CleanShot-2024-06-07-at-14.51.16@2x.png?resize=1200%2C152&ssl=1)
![FlaskとGunicornは両方ともPythonで使われる技術ですが、役割が異なります。
Flask:
説明: FlaskはPython製の軽量なWebアプリケーションフレームワークです。Webアプリケーションを作るための基本的なツールと機能を提供し、使いやすくシンプルな構造であることが特徴です。例えば、ウェブサイトの異なるページへのルーティングやユーザーリクエストの処理などが容易に行えます。
Gunicorn:
説明: Gunicorn(グリーン・ユニコーン)はPythonのWSGI HTTPサーバーで、主にWebアプリケーションの本番環境で利用されます。GunicornはFlaskのようなフレームワークで作成されたアプリケーションをインターネット上で安定して高速に動作させるために使用されます。複数のワーカー(プロセス)を管理して、同時に多数のユーザーリクエストを処理することが可能です。
つまり、Flaskはアプリケーションの「作成」を助け、Gunicornはそのアプリケーションを「配信・実行」するためのサーバーとして機能します。](https://i0.wp.com/tenka.blog/wp-content/uploads/2024/06/CleanShot-2024-06-07-at-15.01.48@2x.png?resize=1200%2C828&ssl=1)
要約すると、
- FlaskはPython用のフレームワークだ。
- GunicornはWSGI HTTPサーバーという、一種のサーバーだ。
ということがわかる。
フレームワークは素のプログラム言語(例えばPython)を一から駆使してプログラムを作成する代わりに、基本的な機能とそれを実現するツールがあらかじめ用意された一種のプログラムで、それを利用すれば車輪の再発明をしなくて済むというメリットが有る。(素人理解で正確でないかもしれない)
一方WSGI HTTPサーバーはまったくの初耳。
![](https://i0.wp.com/tenka.blog/wp-content/uploads/2024/06/CleanShot-2024-06-07-at-15.26.48@2x.png?resize=1072%2C132&ssl=1)
![WordPressでは、デフォルトの機能だけではユーザーのアバター画像を直接変更することはできません。通常、アバター画像はGravatarという外部サービスを通じて管理されます。GravatarはWordPress.comと統合されており、ユーザーのメールアドレスに基づいてアバター画像を表示します。
しかし、WordPress自体でアバター画像を変更するためのプラグインがあります。以下にいくつかの方法を紹介します。](https://i0.wp.com/tenka.blog/wp-content/uploads/2024/06/CleanShot-2024-06-07-at-15.56.11@2x.png?resize=1200%2C615&ssl=1)
Webサーバーと異なるPythonフレームワークの間での通信を標準化する仕組みだという。
そこで、Webサーバーとの違いが気になった。
![Webサーバーとの違い何?可能なら図示して。](https://i0.wp.com/tenka.blog/wp-content/uploads/2024/06/CleanShot-2024-06-07-at-17.02.12@2x.png?resize=750%2C102&ssl=1)
回答が長いので重要な部分だけ抜粋する。
![この図では、クライアントからのリクエストがまずWebサーバーに到達し、次にWSGI HTTPサーバーに渡され、最後にPythonのWebアプリケーションで処理されます。アプリケーションからのレスポンスは逆の経路でクライアントに戻ります。
要約:
Webサーバーは主に静的コンテンツを提供。
WSGI HTTPサーバーはWebサーバーとPythonアプリの通信を仲介。](https://i0.wp.com/tenka.blog/wp-content/uploads/2024/06/CleanShot-2024-06-07-at-15.54.16@2x.png?resize=1200%2C991&ssl=1)
Webサーバーは静的なコンテンツを提供し、WSGI HTTPサーバーは、WebサーバーとPythonアプリの通信を仲介。上の図も合わせてみると仕組みがよくわかる。
そして上の図でわかるように、WSGI HTTPサーバーには、Gunicorn以外に、uWSGIというのもあるらしい。
念のために聞いてみよう。
![uWSGIもWSGI HTTPサーバーですか?
簡潔に一言で答えてください。](https://i0.wp.com/tenka.blog/wp-content/uploads/2024/06/CleanShot-2024-06-07-at-17.06.05@2x.png?resize=634%2C140&ssl=1)
![はい、uWSGIもWSGI HTTPサーバーです。](https://i0.wp.com/tenka.blog/wp-content/uploads/2024/06/CleanShot-2024-06-07-at-17.06.50@2x.png?resize=1200%2C67&ssl=1)