python
  • django
  • nginx
  • uwsgi
  • 2016-12-14 4 views 0 likes 
    0

    이유를 찾을 수없는 매우 이상한 문제가 발생했습니다. 내 애플 리케이션 서버로 uWSGI와 django 애플 리케이션을 가지고 우리의 리버스 프록시로 Nginx.주어진 경로와 다른 경로를 찾고있는 Nginx Django 정적 파일 URL 설정

    PROJECT_DIR = "/home/ubuntu/src/myapp" 
    
    MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media') 
    MEDIA_URL = '/media/' 
    STATIC_ROOT = os.path.join(PROJECT_DIR, 'staticfiles') 
    STATIC_URL = '/staticfiles/' 
    
    STATICFILES_DIRS = (
        os.path.join(PROJECT_DIR, 'static'), 
    ) 
    

    과 무엇의 nginx의 conf에서이 점은 다음과 같습니다 : 장고의 정적 URL에 대한 나의 초기 설정은 다음과 같습니다

    server { 
        listen  80; 
        server_name stg1.myapp.com 
    
        client_max_body_size 5G; # adjust to taste 
    
        access_log /var/log/nginx/myapp-access.log combined; 
        error_log /var/log/nginx/myapp-error.log; 
    
        location /media { 
         alias /home/ubuntu/src/myapp/media/; # your Django project's media files - amend as required 
        } 
    
        location /static { 
         alias /home/ubuntu/src/myapp/staticfiles/; 
        } 
        location/{ 
         uwsgi_pass django; 
         uwsgi_read_timeout 600s; 
         uwsgi_buffering off; 
         uwsgi_send_timeout 600s; 
         proxy_read_timeout 600s; 
         include /home/ubuntu/src/myapp/uwsgi_params; 
    
        } 
    } 
    

    지금, 나는 내가이었다 서버에 액세스하려고 할 때 정적 파일이 오류가 : 주어진 STATIC_ROOT 위치에

    2016/12/13 20:33:03 [error] 30533#0: *194 open() "/home/ubuntu/src/myapp/staticfiles/files/css/base.css" failed (2: No such file or directory), client: 172.31.4.166, server: stg.myapp.com, request: "GET /staticfiles/css/base.css HTTP/1.1", host: "stg.myapp.com", referrer: "http://stg.myapp.com/profile/user1" 
    

    Collectstatic 복사 된 모든 파일. 실제로 검색된 경로는 STATIC_ROOT/files입니다.

    나는이 일을

    STATIC_ROOT = os.path.join(PROJECT_DIR, 'staticfiles/files') 
    

    STATIC_ROOT을 변경합니다. 나는 아직도 디렉토리 staticfiles/files이 찾고 있었고 nginx conf에 주어진대로 staticfiles 디렉토리가 아니라는 것을 알 수 없다. 가능한 이유를 어디에서 찾아야합니까?

    EDIT - 변경이있을 때마다 nginx 서비스를 다시 시작했습니다. 그래서 아무런 문제도 없습니다.

    답변

    1

    에서 링크를 참조하십시오.

    STATIC_URL = '/staticfiles/'이 생성됩니다.

    STATIC_URL = '/ static /'이어야합니다.

    이전 버전은 내 문제의 원인이되는 요청시 경로에 files을 추가합니다.

    0

    디렉토리를 처음 찾을 때 찾을 수 없습니다. [나는 아직 논평 할 특권이 없다.]


    설정이 나에게 좋을 것 같습니다. 설정 파일을 수정할 때 Nginx를 다시 시작하는 것을 잊어 버린 것일 수도 있습니다.

    내가 이유를 발견 또한 STATIC_ROOT in Django on Server

    Static Root and Static Url confusion in Django

    +0

    나는 많은 시간을 nginx conf를 변경해 보았습니다. 따라서 conf를 다시로드해도 아무런 문제가 없습니다. 또한 정적 경로를 'actual_path/files'로 변경하지 않았습니다. –

    +0

    @Nihal Sharma''/home/ubuntu/src/myapp/staticfiles/files/css/base.css ''에 접근하려면 STATIC_ROOT 디렉토리를보고 파일이 있는지 알아야한다. files/css/base.css)가 종료됩니다. – shady

    +0

    @ Nihal Sharma STATIC_URL과 아무런 관련이 없습니다. 로컬 환경에서 STATIC_URL = '/ staticfiles /'와 동일한 설정이 있습니다. 여전히 Nginx는 STATIC_ROOT에 의해 지정된 파일을 찾을 수 있습니다. – shady

     관련 문제

    • 관련 문제 없음^_^