2016-01-13 82 views
0

我在使用Django,Nginx和Gunicorn提供靜態內容時遇到了問題。我可以從my/media /文件夾以及html提供媒體文件(圖像),但是對/ static /文件夾的靜態請求產生了500個錯誤。獲取靜態內容時出現Django + Nginx 500錯誤

我跑collectstatic收集到/ opt所有靜態/ MYAPP/MYAPP/MYAPP /靜態/

這裏是我的Nginx的配置:

server { 
    listen 80; 
    server_name <ip_address>; 

    location = /favicon.ico { access_log off; log_not_found off; } 
    location = /static/ { 
      alias /opt/myapp/myapp/myapp/static/; 
    } 

    location = /media/ { 
      alias /opt/myapp/myapp/myapp/media/; 
    } 


    location/{ 
      include proxy_params; 
      proxy_pass http://unix:/opt/myapp/myapp/myapp/myapp.sock; 
    } 
} 

而且Django的urls.py:

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('core.urls')), 
    url(r'^accounts/', include('allauth.urls')), 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
    + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

Django的settings.py:

STATICFILES_DIRS = [ 
    '/opt/myapp/myapp/myapp/core/static', 
] 

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'static') 

而且從Nginx的access.log裏的樣品(有在error.log中沒有錯誤):

"GET /static/markup/css/index.css HTTP/1.1" 500 63893 "http://104.131.44.215/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" 
+0

nginx或gunicorn會報告錯誤日誌? –

回答

0

什麼是您的settings.py樣子?

編輯:

  1. 你的代碼再次看。在Nginx中,你有不同於settings.py的路徑!
  2. 你可能誤解了Django文檔(staticfiles_dirs VS static_root)
  3. 你STATICFILES_DIRS應該是這樣的

STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )

  • 如果這行不通,改變你的STATIC_ROOT(必須是不同於staticfiles_dirs的路徑),並且不要忘記運行collectstatic
  • +0

    我在settings.py上面添加了靜態行 –

    +0

    看看我編輯過的帖子。 – Yaaaaaaaaaaay

    +0

    從我的理解我的staticfiles_dir應該包含應用程序的靜態文件的路徑,這裏是:'/ opt/myapp/myapp/myapp/core/static'。然後,當我運行collectstatic時,它們全部放置在靜態根目錄下:os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__ file__))),'static') 。然後,我的Nginx應該包含一個到os.path.join的鏈接(os.path.dirname(os.path.dirname(os.path.abspath(__ file__))),'static'),對吧? –

    相關問題