python
  • django
  • nginx
  • uwsgi
  • 2016-12-14 50 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

    相关问题