web-dev-qa-db-ja.com

提供するApacheまたはNginx Djangoアプリケーション?

Django Webアプリケーションをデプロイしたいので、Pythonファイルを提供するWebサーバーを選択する必要があります。

私の実稼働サイトは、データベースとWebサーバーをホストする単一のサーバー上にあることを述べておきます。勢いがつきましたので、データベースを専用サーバーなどに移動することを目指しています。

ここに私の質問があります:

  1. 1つまたは2つのWebサーバーを使用する必要がありますか?この質問の背景には、多くの人がNginXを使用して静的メディアファイルを提供し、Apacheを使用してPythonを提供することを推奨しています。これは、次の質問を招きます。
    1. サーバーを1つだけ使用できないのはなぜですか。私はApacheが時々野獣であるかもしれないことを理解しているので、静的メディアファイルとpythonファイルの両方を提供するためにNginXを使用するのではないかと思います。
    2. 1つのサーバーを使用している場合、ApacheまたはNginXのどちらが良いでしょう。私はApacheの経験がありますが、NginXについては良いことしか聞いていません。
  2. Mod_wsgiとは対照的にFastCGIを使用する利点は何ですか?

事前に感謝します

43
Barry Steyn

1つまたは2つのWebサーバーを使用する必要がありますか?この質問の背景には、多くの人がNginXを使用して静的メディアファイルを提供し、Apacheを使用してPythonを提供することを推奨しています。これは、次の質問を招きます。私はApacheが時々野獣であるかもしれないことを理解しているので、静的メディアファイルとpythonファイルの両方を提供するためにNginXを使用するのではないかと思います。

現在、何らかの方法で既に構成されている他のサイトがない場合、またはさまざまなサーバー間で相互に排他的な特定の機能が必要な場合、複数のサーバーを使用する理由はわかりません。これは、不必要な複雑さと構成を追加するだけです。

1つのサーバーを使用している場合、ApacheまたはNginXのどちらが良いでしょう。私はApacheの経験がありますが、NginXについては良いことしか聞いていません。

すべての「どちらが良い」質問と同様に、これは通常好みの問題です。また、具体的な答えを得るには、より具体的な質問をする必要があるでしょう。

特定のサーバーでの経験があり、すぐに実行したい場合は、当面はすでに知っていることを使用することをお勧めします。後でいつでも別のWebサーバーに切り替えることができます。一方、代替案について学ぶ良い機会です。


tl; dr:構成と管理が簡単なものを探します。個人的には、nginxとgunicornを選びます。これは主に簡単で、行き詰まった場合に利用できるリソースがたくさんあるためです。

あなたが実際に必要とするまで、私はパフォーマンスについてあまり心配しません。すべての主要なWebサーバーが試され、テストされているため、ほとんどの場合、アプリケーションの要件と実際の負荷が原因であり、いずれにしても微調整のための監視とモデリング、およびテストが必要です。

Mod_wsgiとは対照的にFastCGIを使用する利点は何ですか?

Pythonに関するWSGI、CGI、FastCGI、およびmod_pythonの違いと使用法


読む記事(古いもの、新しいもの);

11
kalvatn

Nginx and Apacheの両方を使用することを誰に勧めているのかはわかりませんが、それは恐ろしい考えです。どちらを選択しても、どちらも単純にリバースプロキシとして機能し、静的リソースのみを提供し、その他すべてをuwsgiなどのサブプロセスに渡します。

Nginxは軽量で箱から出して非常に速いため、私はNginxを好みます。 Apache canも同様に優れていますが、ソースからビルドし、Nginxに一致させるために使用する構成を正確に把握する必要があります。ただし、Apacheにはより多くの機能があり、操作が少し簡単です。それは本当にあなたとあなたのアプリケーションのニーズ次第です。

ただし、どちらを選択しても、必要なのはone-両方ではありません。

2
Chris Pratt

質問1)使用できるサーバーは1つだけですが、静的メディアを提供する場合、lighttpdやnginxなどのソリューションの方がはるかに高速です。本当に1つのサーバーだけを使用したい場合は、Apacheを使用します。これには、必要なすべての柔軟性があり、最も一般的なWebサーバーです。

質問2)目的によって異なります。あなたはここで情報を見つけることができます: Deploying Django(fastcgi、Apache mod_wsgi、uwsgi、gunicorn)

2
marue

最良の選択はvirtualenv、uwsgi、nginxだと思います。今、すべてのサーバーを変更し、パフォーマンスに本当に満足しています。

ここにあなたのウェブサーバーを設定する方法についての良いチュートリアルがあります http://senya.pl/2011/03/sexy-nginx-uwsgi-stack-for-Django-with-virtualenv/

2
nicowernli

Nicowernliが提案したリンクをたどろうとしたが、その時点でsenya.plがダウンしていた。これは良い代替チュートリアルのようです...最初の2つの章を読んでみてください。

http://www.abidibo.net/blog/2012/04/30/deploy-Django-applications-nginx-uwsgi-virtualenv-south-git-and-fabric-part-1/

1
michel.iamit
  1. 少ないほど良い。
  2. Django Nginxを介したアプリケーションを使用する最善の方法は、使用 wsgi です。これは純粋なWSGIであり、新しいバージョンのNginxによってサポートされています。
0
risent

Pythonサーバーとしてgunicorn + eventletを使用し、リバースプロキシとしてnginxを使用して大きな成功を収めました。最近、uWSGIに切り替えましたが、それよりも優れているとはいえ、それと同じくらい良い解決策のようです。私はまだApacheを試していないし、Djangoですが、Djangoを使用する前はApacheユーザーでした。すべてを完了するための良い書き方は次のとおりです。 http:// radtek。 ca/blog/Django-production-deployment-via-nginx-and-gunicorn-and-virtualenv /

0
radtek