2017-02-28 8 views
3

私はちょっと厄介な質問をしています。以前は答えていましたが、djangoではなく静的ファイルを提供するという点で違いがあります。 webpackにバンドルされ、ノードで提供されているCSSは、問題なく動作しています。ここでは、admin cssとget_static_prefixデコレータを使用している別のファイルを提供しています。次のようにDjango React Nginxが管理者の静的ファイルを扱っています

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

root 
    | 
    public 
     - templates 
     - static 
      | <-- collectstatic adding files here 
     - vendor 
    | 
     server 
     - app1 
     - app2 
      | settings.py   

の/ etc/nginxの/サイト利用可能/プロジェクト

server { 
    listen xxx.xxx.xxx.xxx:8000; 
    server_name xxx.xxx.xxx.xxx; 
    location /static { 
      alias /root/se/env/public/static/; 
    } 
} 

とsettings.py

STATIC_URL = '/root/se/env/public/static/' 
MEDIA_URL = '/media/' 
STATIC_ONLY_URL = '/static_only/' 

if not DEBUG: 
    MEDIA = '/media', 
    STATIC_ROOT = '/root/se/env/public/static/' 
    MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'public', 'media') 
    STATICFILES_DIRS = '/root/se/env/public/vendor/static/', 

Iでのセットアップ今はしばらくの間周りを回っていた。私はDjangoをかなり新しくしていて、実際にこの仕組みが得られていません。私が理解できることから、STATICFILES_DIRSはcollectstaticが静的ファイルを収集する場所であり、STATIC_ROOTは静的ファイルがcollectstaticが実行された後にダンプされる場所です。私はSTATIC_URLが私が間​​違っているところだと思う - しかし、私は多くの運がそれを考え出していない。

DEBUG = Trueのときにadmin cssが動作しないので、何かを誤って設定しました。結果は次のとおりです。

Not Found: /static/admin/css/base.css 
+0

STATIC_URLを「/ static /」に変更してみましたか?また、nginxの場所/ staticを/ static /に変更してみてください。 –

+0

@Kamal - あなたの返事をありがとう。私はそれを試みたが、まだ何も得ていない。もう少し詳しく質問を更新しました。 – monkeyman

答えて

2

location /staticが間違っています。 aliasディレクティブは、パス名を構成するときにURIの一部を置き換えます。 /locationパラメータとaliasパラメータ/を持つべき両端、またはどちらも終わり:

location /static { 
    alias /root/se/env/public/static; 
} 

か:

location /static/ { 
    alias /root/se/env/public/static/; 
} 

実際には、aliasパラメータはlocationパラメータで終わるので、 aliasディレクティブを使用しないでください。 the alias documentationの末尾の注記を参照してください。

location /static { 
    root /root/se/env/public; 
} 
+0

良いキャッチ、ありがとう。私はまだ管理のために表示する管理者のCSSを取得するために管理していないが、これは私を一歩近づけた。 – monkeyman

関連する問題