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

    我遇到了非常奇怪的問題,我找不到原因。我有一個與uWSGI作爲我的應用程序服務器和Nginx作爲我們的反向代理的django應用程序。我對在Django的靜態URL初始設置情況如下: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的的c​​onf是如下:

    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; 
    
        } 
    } 
    

    現在,當我試圖訪問我的服務器收到此錯誤的靜態文件:

    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位置的文件。但實際搜索的路徑是 - STATIC_ROOT/files

    當我改變了STATIC_ROOT

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

    它的工作。我仍然無法知道爲什麼目錄staticfiles/files被尋找,而不僅僅是在nginx conf中給出的staticfiles目錄。我應該在哪裏尋找可能的原因?

    編輯 - 我已經重新啓動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許多次。所以沒有配置重新加載的問題。此外,我從來沒有將靜態路徑改爲'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

    相關問題