1

django 1.3 で提供される静的ファイルの新しい方法に関しては、私は少しさびていますが、ここで問題があるのは django ではないはずです。

debianがインストールされたクラウドサーバーでnginx + fastcgiを使用してdjangoアプリを実行しようとしています。現在(開発中)サーバーは1つしかなく、ロードバランサーを使用して複数のサーバーを実行して、これを少し簡単にすることを検討していますが、実際にnginxで静的ファイルを提供するのに問題があります.

ファイルを提供するためにnginx.confをセットアップするためのさまざまなチュートリアルに従いました

server {
    listen 80;
    server_name 127.0.0.1;

    location /static  {
        autoindex on;
        root /static;
    }
}

上記はnginx.confからの抜粋です。ルートを何に設定しても、アクセスしようとすると、nginx は 404 not found エラーをスローしますhttp://127.0.0.1/static/

ファイル構造は次のとおりです。

/home/user/site/project
/home/user/site/static
/home/user/site/templates

Django settings.py には、STATIC_ROOT および STATIC_URL として次のように設定されています。

STATIC_ROOT = "/home/user/site/static/"
STATIC_URL  = "http://127.0.0.1/static/"

誰かがこれをどこで行うべきかについて正しい方向に私たちを向けることができれば、それは素晴らしいことです.

4

4 に答える 4

3
root /static

/home/user/site/staticこれは代わりにすべきではありませんか?

于 2011-07-13T18:49:12.637 に答える
1

「 root」または「alias 」の使用の違いを確認してください。基本的に「ルート」を使用する場合、「場所」(/static/) の次のパスがパスに追加されますが、「エイリアス」の場合は無視されます。

于 2013-01-07T10:07:51.007 に答える
1

上記のジムの回答に基づいて、解決策が見つかりました。

root /static 

次のように変更されました。

root /home/user/site/static

ただし、ログを確認すると、nginx がhttp://127.0.0.1/staticで見つけようとしていたパスは /home/user/site/static/static/ であり、明らかに間違っているようです。

これが正しい方法であるかどうかはわかりませんが、すべての静的ファイルをルートに向けるようになりました (URL の /static の必要性を取り除きます。そのため、/static/images については、http://127.0. 0.1/画像/ .

于 2011-07-13T20:47:18.540 に答える
0

ディレクティブのドキュメントを確認してくださいroot。Apache のエイリアス ディレクティブとは対照的に、場所の一致は削除されません。したがって、場所を指定するときはstatic、ルートとして定義するフォルダーにそのstaticフォルダーが含まれている必要があります。したがって、nginx が探しているの/home/user/site/static/staticは意図的な動作であることは間違いありません。

http://host/static/images静止画像を提供するための URL として使用することをお勧めします。このようにして、静的ファイルにプレフィックスを使用することを提案するDjango ドキュメントの静的ファイルの管理に従います。そうしないと、さまざまな静的コンテンツ用の複数のフォルダーがあり、プロジェクト フォルダーとアプリ フォルダーが乱雑になります。

于 2011-07-13T21:21:26.643 に答える