私は学校の非常に小規模な Web サイト (1 日に 100 人未満のユーザー) に取り組んでおり、静的ファイルを管理するために 2 つ目のサーバーをデプロイする代わりに、django サーバーに静的ファイルを保存する方法があるかどうか疑問に思っていました。Google 検索では次のようなものが見つかります: https://docs.djangoproject.com/en/dev/howto/static-files/ですが、これを行うためのより簡単な方法があったとしても、 Django サーバーではあまり効率的ではありません。
2 に答える
はい、同じサーバーを使用して静的ファイルを提供することは確かに可能です。ドキュメントは、Apache/mod_wsgi https://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/modwsgi/#serving-filesを使用してこれを行う例を示してい ます
ただし、Django と同じ Apache VirtualHost でメディア ファイルを提供する以外に選択肢がない場合は、一部の URL を静的メディアとして提供し、他の URL を Django への mod_wsgi インターフェイスを使用して提供するように Apache を設定できます。
ドキュメントが別の Web サーバーを使用して言及している場合、必ずしも別のボックス (仮想または物理) を意味するわけではなく、静的リソースを提供するために最適化された別のサーバーであることに注意してください。https://docs.djangoproject.com/en/1.4/howto/static-files/#serving-static-files-from-a-dedicated-serverから
大規模な Django アプリケーションのほとんどは、別の Web サーバー (つまり、Django を実行していないサーバー) を使用して、静的ファイルを提供します。このサーバーは、多くの場合、別のタイプの Web サーバーを実行します。高速ではありますが、機能が十分ではありません。
一般的なセットアップは、WSGI サーバーとして、Apache/mod_wsgi、Gunicorn、または uWSGI の前で静的リソース用に Nginx を実行することです。これは、小さなサイトの場合、単一のサーバーで実行できます。
「Djangoサーバー」とは、によって実行される開発サーバーを意味する場合、python manage.py runserver
これに反対することをお勧めします。
Django 開発サーバーをあらゆる種類の運用環境で実行し、それを介して静的ファイルを提供することは、本当に悪い考えです。DEBUG = FALSE
私は staticfiles アプリがあなたを許すとは思わない
ただし、Django アプリケーションを提供している同じ Web サーバー (lighttpd、apache、nginx) を介して静的コンテンツを提供する場合はpython manage.py collectstatic
、プロジェクト ディレクトリで実行してすべての静的ファイルを 1 つのディレクトリにコピーし、構成することで簡単に行うことができます。他の静的サイトと同様に、そのディレクトリからサービスを提供する Web サーバー。