最初の Django プロジェクトを Linux サーバーにアップロードしていますが、プロジェクトをファイルシステムに配置する必要がありますか?
PHP、または ASP プロジェクトでは、すべてが に入ります。/var/www
同じことを行って、私の Django プロジェクトを/var/www
フォルダーに追加してもよろしいですか?
最初の Django プロジェクトを Linux サーバーにアップロードしていますが、プロジェクトをファイルシステムに配置する必要がありますか?
PHP、または ASP プロジェクトでは、すべてが に入ります。/var/www
同じことを行って、私の Django プロジェクトを/var/www
フォルダーに追加してもよろしいですか?
Django チュートリアルでは、次のように述べています。
このコードはどこに置くべきですか?
PHP の経験があれば、Web サーバーのドキュメント ルート (/var/www などの場所) の下にコードを配置することに慣れていることでしょう。Django では、そのようなことはありません。この Python コードを Web サーバーのドキュメント ルート内に配置することはお勧めできません。これは、他のユーザーが Web 経由でコードを表示できる可能性があるためです。それはセキュリティ上良くありません。/home/mycodeなど、ドキュメント ルート以外のディレクトリにコードを配置します。
@Andy Haydenは、コードを配置しない場所を実際に述べています。ファイル階層システム (FHS)は、次の構造を意味します。orにPATH
マップします(複数のパッケージを提供するパーティは を使用することをお勧めします):PACKAGE
PROVIDER
PROVIDER/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_wsgi
Apacheを使用している場合はpython manage.py runmodwsgi --server-root /etc/opt/PATH --setup-only
、Apache 制御コマンドを FHS 準拠の場所に配置するため、次のような呼び出しがおそらく望ましいでしょう。ただし、この場合、呼び出すのは面倒です。
私の理解/home
では、同じサーバー上で複数のサイトをホストしているときに、PHP 開発者によって伝統的に使用されていました。Django を使用している場合、おそらく専用のマシンからサイトにサービスを提供していますが、この場合、この構造は少し不利になります... YMMV.