2013-06-30 4 views
7

यह मेरा nginx config है:Nginx + Gunicorn + Django के साथ स्थिर फ़ाइलों सेवित

server { 
     listen 80; 
     server_name localhost; 

     keepalive_timeout 5; 

     access_log /home/tunde/django-projects/mumu/nginx/access.log; 
     error_log /home/tunde/django-projects/mumu/nginx/error.log; 

     root /home/tunde/django-projects/mumu; 

     location/{ 
      try_files $uri @proxy_to_app; 
     } 

     location @proxy_to_app { 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header Host $http_host; 
      proxy_redirect off; 
      proxy_pass http://127.0.0.1:8000; 
     } 
    } 

मेरे settings.py लगता है:

:

import os 
    settings_dir = os.path.dirname(__file__) 
    PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir)) 

    STATIC_ROOT = '/home/tunde/django-projects/mumu/STATIC/' 
    STATIC_URL = '/static/' 

    STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static/'), 
    ) 

मेरे supervisord.conf फ़ाइल की तरह दिखता है

[program: mumu] 
command = /home/tunde/ENV1/bin/gunicorn -w 1 --bind=127.0.0.1:8000 mumu.wsgi:application 
directory = /home/tunde/django-projects/mumu/ 
stdout_logfile= /home/tunde/django-projects/mumu/supervisor/logfile.log 
stderr_logfile= /home/tunde/django-projects/mumu/supervisor/error.log 
user = tunde 

समस्या यह है कि स्थिर फाइलें नहीं मिलती हैं और मुझे नहीं पता कि मैं क्या गलत कर रहा हूं। एक url जैसे /static/css/styles.css एक 404 देता है। सहायता की सराहना की जाएगी।

उत्तर

18

आपको एक nginx स्थान ब्लॉक बनाने की आवश्यकता है जो आपके django STATIC_URL के स्थान से मेल खाता है। चूंकि आपने इसे कॉन्फ़िगर किया है, nginx स्थिर django अनुप्रयोग में स्थिर संपत्तियों के अनुरोध भी अग्रेषित कर रहा है। मुझे लगता है कि आप अपने django अनुप्रयोग लॉग में 404 त्रुटियां देख रहे हैं? आप nginx इन अनुरोधों को संभालने के लिए चाहते हैं, django नहीं।

location /static { 
    alias /home/tunde/django-projects/mumu/STATIC/; 
} 

django admin commandcollectstatic सुनिश्चित करें कि सभी स्थिर संपत्ति STATIC_ROOT निर्देशिका में प्रतिलिपि मिल बनाने के लिए चलाने के लिए सुनिश्चित करें।

+0

कारण @scott धन्यवाद, मैं अपने स्थिर के लिए स्थान और नाम बदलने का फैसला करता है फ़ाइलें। Nginx रीबूट के बाद, मेरी कॉन्फ़िगरेशन ने आपके सुझाए गए स्थान ब्लॉक को जोड़ने के बिना काम किया। – Tundebabzy

+0

जब आप अपनी पर्यवेक्षक लॉग फ़ाइल देखते हैं, तो क्या आप स्थिर (आईएमजी, सीएसएस, जावास्क्रिप्ट) फ़ाइलों के लिए अनुरोधों को देखते हैं? –

+0

my logfile.log यानी supervdord.conf में stdout_logfile या तो नया स्थान ब्लॉक डालने के बाद भी – Tundebabzy

0
location/{ 
    try_files $uri @proxy_to_app; 
} 

Django किसी भी तरह एक फ़ोल्डर "स्थिर" कहा जाता है में संग्रहीत स्टैटिक फ़ाइलें अनदेखी के साथ एक पिछले अनुभव को बदल दें $uri -> $request_uri

location/{ 
    try_files $request_uri @proxy_to_app; 
} 
संबंधित मुद्दे