27

最初の Django プロジェクトを Linux サーバーにアップロードしていますが、プロジェクトをファイルシステムに配置する必要がありますか?

PHP、または ASP プロジェクトでは、すべてが に入ります。/var/www同じことを行って、私の Django プロジェクトを/var/wwwフォルダーに追加してもよろしいですか?

4

2 に答える 2

35

Django チュートリアルでは、次のように述べています。

このコードはどこに置くべきですか?
PHP の経験があれば、Web サーバーのドキュメント ルート (/var/www などの場所) の下にコードを配置することに慣れていることでしょう。Django では、そのようなことはありません。この Python コードを Web サーバーのドキュメント ルート内に配置することはお勧めできません。これは、他のユーザーが Web 経由でコードを表示できる可能性があるためです。それはセキュリティ上良くありません。

/home/mycodeなど、ドキュメント ルート以外のディレクトリにコードを配置します。

于 2012-12-11T14:44:43.760 に答える
5

ファイル階層システム

@Andy Haydenは、コードを配置しない場所を実際に述べています。ファイル階層システム (FHS)は、次の構造を意味します。orにPATHマップします(複数のパッケージを提供するパーティは を使用することをお勧めします):PACKAGEPROVIDERPROVIDER/PACKAGE

/etc/opt/PATH  # FHS location for /opt configuration files
/opt/PATH      # FHS location for PROVIDER or PACKAGE name
/var/opt/PATH  # FHS location for /opt variable storage 

FHS は/opt/PATH、ones パッケージを正常に実行するために必要なすべての資料が含まれていることを期待しているため、次のシンボリック リンクをセットアップするのが賢明と思われます。

  • /etc/opt/PATH/opt/PATH/etc
  • /var/opt/PATH/opt/PATH/var

これは良い基礎を提供しますが、Django プロジェクトには、上記の構造が完全には満たさない無関係な要件があります。

静的ファイル

静的ファイルは、静的配信用の Web サーバー ルート (通常は ) を指す必要がある を実行python manage.py collectstaticすると展開されます。STATIC_ROOT/var/www/PATH

/var/www/PATHシンボリックにリンクすることもでき /opt/PATH/static ますが、これは通常悪い考えです。www.domain.tld/../サーバーの構成が間違っていて、ユーザーがアクセスしてコピーした場合を考えてみましょう。

設定

でプロジェクトを作成しdjango-admin create-project WEBSITEた場合、通常setup.py、フォルダーの下にファイルがありWEBSITEます。

PROJECT/
    WEBSITE/
         setup.py
         ...

この設定モジュールをパッケージに変換した場合、またはラッパーなどを使用したdjango-admin場合django-cms-create

PROJECT/
    WEBSITE/
         settings/
             __init__.py  # from .settings import *
             settings.py
         ...

上記の代わりににシンボリックリンク/etc/opt/PATHすることができます。そうする実際的な理由は思いつきませんが... YMMV。/opt/PATH/WEBSITE/settings/opt/PATH/etc

メディア

通常、Web サイトのユーザーによって提供されるメディアは、 に配置され MEDIA_ROOTます。この場合、マッピング/var/opt/PATHするのが賢明と思われます。/opt/PATH/media

仮想環境

/opt/PATH/env最も論理的な場所のようです。/var/env/PATHも賢明に思えますが、おそらく へのシンボリック リンクとして適してい/opt/PATH/envます。

仮想環境はアプリケーションでもライブラリでもないため、場所/opt/binと場所/opt/libsはこれには適していません。/env/または/pyvenv/FHS に準拠していません。

ウィスキー

mod_wsgiApacheを使用している場合はpython manage.py runmodwsgi --server-root /etc/opt/PATH --setup-only、Apache 制御コマンドを FHS 準拠の場所に配置するため、次のような呼び出しがおそらく望ましいでしょう。ただし、この場合、呼び出すのは面倒です。

私の理解/homeでは、同じサーバー上で複数のサイトをホストしているときに、PHP 開発者によって伝統的に使用されていました。Django を使用している場合、おそらく専用のマシンからサイトにサービスを提供していますが、この場合、この構造は少し不利になります... YMMV.

于 2019-11-23T22:57:00.000 に答える