web-dev-qa-db-ja.com

Djangoで使用するWebサーバーはどれですか? (2011年に使用するために更新)

私は初心者であり、Djangoについて話している記事のほぼ90%を読んだので、この質問をしていますが、問題は次のとおりです:Djangoが作成され、デプロイに問題がありました。これはpythonであり、pythonはPHPではありません! Djangoチュートリアルを読むとき、初心者は大きな問題を抱えています。たとえば、2008年に作成されたチュートリアルを受講すると、「時代遅れ」のチュートリアルを見つけることができるため、次のように話すことがわかります。

djangoをデプロイするには、Apacheを使用し、静的ファイル用に別のサーバーを使用することを忘れないでください。たとえば、リバースプロキシとしてnginxを使用します。

しかし今、私は、過去にDjangoが多くのリソースを使用するmod_pythonを使用して提供されていたため、2番目のサーバーを作成することは役に立たないという記事をいくつか見つけました!だからここに私の質問があります:

  1. もちろん最新リリースを使用して、VPS、Apache、Nginxのどちらに最適ですか?言わないでください:軽いまたはチェロキーを使用してください...
  2. たとえば、答えが次の場合:Ngnixを使用する場合、以前は2つのWebサーバーを作成する方がよいので、1つまたは2つのサーバーを使用する方がよいでしょうか。
  3. 脳を調べてみると、利用できる空き容量が少ないので、他に何も学びたくないので、100%Pythonicソリューションで大丈夫だと思いますか? CherryPyは完璧なソリューションです。つまり、CherryPy + Djangoとバスタです! Apache、Nginx、python言語以上の学習はありません!
  4. 私が読んだところによると、Djangoと非同期サーバーは「良い友達」ではないので、Nginxを使用するのに本当に良い選択がありますか?

更新:Djangoおよび非同期について(4)を追加しました。

23
Abdelouahab

1-もちろん最新リリースを使用して、VPS、Apache、またはNginxに最適なものはどれですか?言わないでください:軽いまたはチェロキーを使用してください...

どちらでも問題なく動作します。

2-たとえば、答えが次の場合:ngnixを使用する場合、以前は2つのWebサーバーを作成する方がよいので、1つまたは2つのサーバーを使用する方がよいでしょうか。

重要な点は、Django/Pythonが静的リソースを提供してはならないということです。 「2つのサーバー」は、異なる物理サーバー、インスタンス、または仮想サーバーである可能性があります。静的ファイルを直接提供し、動的リクエストをPythonに渡すようにnginxを構成する例を次に示します。

から https://code.djangoproject.com/wiki/DjangoAndNginx

server {
    listen 80;
    server_name localhost;
    location /site_media  {
        root /media/; # Notice this is the /media folder that we create above
    }
    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|Zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
        access_log   off;
        expires      30d; 
    }
    location / {
        # Host and port to fastcgi server
        fastcgi_pass 127.0.0.1:8080;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_pass_header Authorization;
        fastcgi_intercept_errors off;
        }
}

3-脳を調べたところ、利用できる空き領域が少ないことがわかったので、他のことを学びたくないので、100%Pythonicソリューションで問題ないと思いますか? CherryPyは完璧なソリューションです。つまり、CherryPy + Django and basta!Apache、Nginx、python language!

IMO、Apacheまたはnginxの設定は非常に簡単で、そこにはたくさんのリソースがあります。簡単な設定をするために、それらについてあまり学ぶ必要はありません。

6
cope360