51895


どうしてローカルではアプリケーションサーバ（Flask）のみで動作するのにGAEやherokuにアップロードするとGunicornやApache、nginxが必要になるのですか？  
色々種類あるwebサーバは何が違うのですか？


CC BY-SA 4.0
2019-01-11T09:00:25.867
51889
2019-01-25T03:04:53.077
22565
question
python nginx heroku google-app-engine flask
アプリケーションサーバとwebサーバの違い。


> Apache、nginxが必要になるのですか？

ApacheやNginxなどのWebサーバをAPサーバのフロントに配置する主な目的は、以下のようなことだと思います。

  * 負荷分散
  * セキュリティの強化
  * 静的ファイルの処理の高速化
  * Webサーバにしかない機能の利用

Webサーバが無くても要件を満たせるのであれば、APサーバだけでも問題無いです。

> 色々種類あるwebサーバは何が違うのですか？

機能やアーキテクチャなどいろいろ違います。「Apache vs Nginx」とか「Apache Nginx 比較」とかでググればたくさん情報が出てきます。


CC BY-SA 4.0
2019-01-11T09:34:19.633
51890
2019-01-25T03:04:53.077
2019-01-25T03:04:53.077
21092
21092
51889
answer


Gunicorn → アプリケーションサーバー  
ApahceやNGinx → Webサーバー  
Flask → PythonのWebアプリケーション フレームワーク  
になるかと思います。

Flask
には、サーバー機能が組み込まれてはいますが、開発やテストをすることを主眼に用意されており、性能、安定性、セキュリティなどは考慮されておらず、簡素な物です。

本番運用する場合は Gunicorn などの アプリケーションサーバー（WSGI サーバー）を利用するのが推奨されています。

Gunicorn は Pythonで実装された WSGI サーバーで、Webサーバーとしての機能もあるので Gunicorn単体でも動きますが、Nginx
と組み合わせるのが強く推奨されていて、外部からの攻撃に強くなるのが理由として挙げられてます。  
<http://docs.gunicorn.org/en/latest/deploy.html>

Apacheと、Nginxは どちらも人気で実績の多いHTTPサーバーです。違いはとても書ききれませんが、超々ざっくり特徴を書くと

  * Apacheは歴史が古く 長い期間をかけて 拡張されてきた ど定番 Webサーバー。
  * Nginxは比較的新しくて設定がシンプルなので 今は これが一押し Webサーバー。

こんな感じかと。


CC BY-SA 4.0
2019-01-11T11:36:32.767
51895
2019-01-11T11:36:32.767
5008
51889
answer