2014-04-08 4 views
0

Verry 특이한 문제가 있습니다. 정적 파일이 하나도로드되지 않았습니다. 404이 발생했습니다. 정적 파일이 nginx 서버에서 완전히 제공되도록 DEBUG=False으로 프로덕션 환경을 설정합니다.Django 앱 + nginx가 서버 정적 파일에 실패합니다.

설정/production.py

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') 
STATIC_URL = '/static/' 
DEBUG = TEMPLATE_DEBUG = False 

의 nginx/사이트 사용/MyApp를

server { 
    listen 80; ## listen for ipv4; this line is default and implied 
    server_name myapp.com; 
    access_log /var/log/nginx/myapp.log; 
    error_log /var/log/nginx/myapp.log; 

    root /home/apps/myapp/; 

    location/{ 
      gzip_static on; 
      include uwsgi_params; 
      uwsgi_pass 127.0.0.1:3031; 
    } 

    location /static/ { # STATIC_URL 
      alias /home/apps/myapp/static/; # STATIC_ROOT 
      expires 30d; 
    } 
    location /media/ { # MEDIA_URL 
      alias /home/apps/myapp/media/; # MEDIA_ROOT 
      expires 30d; 
    } 
} 

myapp.log

2014/04/08 04:20:11 [error] 22178#0: *590 open() "/home/apps/myapp/staticgrappelli/stylesheets/mueller/grid/output.css" failed (2: No such file or directory), client: 77.89.196.6, server: myapp.com, request: "GET /static/grappelli/stylesheets/mueller/grid/output.css HTTP/1.1", host: "myapp.com", referrer: "http://myapp.com/admin/" 
77.89.196.6 - - [08/Apr/2014:04:20:11 +0200] "GET /static/grappelli/stylesheets/mueller/grid/output.css HTTP/1.1" 404 200 "http://myapp.com/admin/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36" 

617,451,515,이 예에서 내 정적 루트 /home/apps/myapp/static 및 응용 프로그램 정적 파일 사이의 실종 /grappelli/stylesheets/mueller/grid/output.css을 유의하시기 바랍니다.

이 문제가 발생하는 이유와 해결 방법에 대한 단서가있는 사람이 있습니까?

UPDATE (SOLUTION)

확인, 문제는 nginx 구성 파일에서 /static/ 폴더를 지정하는 이유가 없기 때문에 Django's 정적 파일이 www.myapp.com/static/ 폴더에서 기본적으로 제공하는 것입니다. 다른 사람이 같은 문제가있는 경우 그래서, 단지 nginx/sites-enabled/myapp 파일에서 다음 부분을 제거 :

location /static/ { # STATIC_URL 
     alias /home/apps/myapp/static/; # STATIC_ROOT 
      expires 30d; 
     } 
     location /media/ { # MEDIA_URL 
      alias /home/apps/myapp/media/; # MEDIA_ROOT 
      expires 30d; 
     } 
+0

- myapp.log는 Nginx 로그 파일입니까? – vaultah

+0

네, 그것은'nginx' 로그 파일입니다. 그러나 그것을 알아내어 해결책으로 업데이트를 게시 할 것입니다. –

답변

0

당신은 서버에 파이썬 manage.py의 collectstatic를 실행 했습니까?

파일이 정적 루트 디렉토리에 있는지 확인하십시오.

1

확인, 문제는 nginx 구성 파일에서 /static/ 폴더를 지정하는 이유가 없기 때문에 Django's 정적 파일이 www.myapp.com/static/ 폴더에서 기본적으로 제공하는 것입니다. 다른 사람이 같은 문제가있는 경우 nginx/sites-enabled/myapp 파일에서 다음 부분을 제거하십시오.

location /static/ { # STATIC_URL 
     alias /home/apps/myapp/static/; # STATIC_ROOT 
      expires 30d; 
     } 
     location /media/ { # MEDIA_URL 
      alias /home/apps/myapp/media/; # MEDIA_ROOT 
      expires 30d; 
     } 
관련 문제