質問: どうしてローカルではアプリケーションサーバ(Flask)のみで動作するのにGAEやherokuにアップロードするとGunicornやApache、nginxが必要になるのですか? 色々種類あるwebサーバは何が違うのですか?
回答: Gunicorn → アプリケーションサーバー ApahceやNGinx → Webサーバー Flask → PythonのWebアプリケーション フレームワーク になるかと思います。 Flask には、サーバー機能が組み込まれてはいますが、開発やテストをすることを主眼に用意されており、性能、安定性、セキュリティなどは考慮されておらず、簡素な物です。 本番運用する場合は Gunicorn などの アプリケーションサーバー(WSGI サーバー)を利用するのが推奨されています。 Gunicorn は Pythonで実装された WSGI サーバーで、Webサーバーとしての機能もあるので Gunicorn単体でも動きますが、Nginx と組み合わせるのが強く推奨されていて、外部からの攻撃に強くなるのが理由として挙げられてます。 Apacheと、Nginxは どちらも人気で実績の多いHTTPサーバーです。違いはとても書ききれませんが、超々ざっくり特徴を書くと * Apacheは歴史が古く 長い期間をかけて 拡張されてきた ど定番 Webサーバー。 * Nginxは比較的新しくて設定がシンプルなので 今は これが一押し Webサーバー。 こんな感じかと。