2011-02-01 22 views
8

Linuxボックスで運用環境で動作する単純なDjangoアプリケーションをセットアップします。アプリにはトラフィックがほとんどなく、1日に100ページの読み込みが少なくなります。組み込みのDjango Webサーバを使っても構いませんか、Apacheとmod_wsgiをインストールする必要がありますか?もしそうなら、これの理由は何ですか?おそらくセキュリティ?生産環境でDjangoに組み込まれたWebサーバーを使用する

UPDATE

OK、私が組み込みのサーバーを使用するべきではありません明らかです。 Apacheの代替案のいくつかは面白く見えます。おそらくもっと普及している/もっと頻繁にDjangoで使用されているものはありますか?

答えて

13

この(組み込みDjango Webサーバー)サーバーは、プロダクション設定では使用しないでください。セキュリティ監査やパフォーマンステストは行われていません。

http://docs.djangoproject.com/en/dev/ref/django-admin/#runserver-port-or-address-port

しかし、あなたはしたくない場合はApacheを使用していません。 SpawningGunigornなどをご利用ください。

Cherokeeも簡単に設定できます。

+0

OKこれはかなり明確な感謝ですか? – paperplane

+0

@paperplaneはい: – Epeli

+1

あなたは間違いなく組み込みのウ​​ェブサーバを使いたくありません。 "重い" Apacheインストールを混乱させたくない場合は、lighttpd(http://docs.djangoproject.com/ja/dev/howto/deployment/fastcgi/?from=olddocs#lighttpd-setup )またはnginx(http://code.djangoproject.com/wiki/DjangoAndNginx) – bhamby

16

それは、私は、Apacheをインストールし、mod_wsgiのなら、この

のための組み込みDjangoのWebサーバを使用しても大丈夫ですか?

はい。

この場合、どのような理由がありますか?おそらくセキュリティ?

部分的に。

さらに重要なのは、ちょっとしたおもちゃDjangoサーバーがシングルスレッドで、コードのハングアップがサーバーをハングアップさせることです。これは、2人のユーザがほぼ同時にクリックしたときに、ユーザ1のクエリがDjangoを経由して、ユーザ2のクエリが開始される前でも終わらなければならないことを意味します。

これにはデスクトップへの非常に遅いダウンロード速度が含まれているはずです。

Apache(すべての選択肢と同様、lighttpdまたはnginxなど)はマルチスレッドです。トランザクションの最も遅い部分は、Apacheからデスクトップへのダウンロードです。 Pythonコード(とDjango)がこれをシングルスレッドで扱うことは望ましくありません。少数のユーザーであっても。

また、あなたはDjangoが静的メディアサービス提供していないものを(すなわち、CSSやJSライブラリファイルを。)

Apacheとmod_wsgiををしている場合は、アプリケーション内の単一遅いスポットは、システム全体のスループットに影響を与えません。場所。 1つのリクエストの出力ページは、別のユーザーの出力と並行してゆっくりPCデスクトップにダウンロードできます。

+0

ありがとう非常に役立ちます。 – paperplane

+0

"また、静的メディア(CSSやJSライブラリファイル)を扱うDjangoはありません。" - なぜですか? –

2

組み込みのDjangoサーバは、本稼動のために構築されていません。主にセキュリティと効率性の理由は数多くあります。 文書でカバーされているmod_wsgiを使用することです。here

9

nginx + gunicornを使用してください。

Nginx:5行の設定。 Gunicorn:2行の設定。それは簡単で効率的です。より良い制御のためにスーパービジョンを使用してガンコーンプロセスを起動することができます。

gunicornとsupervisordの両方をpipでインストールすることができ、nginxはデフォルトパッケージプールのほぼすべてのディストリビューションで利用できます。

+0

Gunicornの設定がfast-cgiのセットアップより速い場合、変更を知っていますか? – Nick

関連する問題