不提供样式表和图像,但其他静态文件是

时间:2015-05-12 01:45:01

标签: python django nginx gunicorn

我最近使用django runserver命令在我开发它时启动我的服务器,并且当我这样做时,我得到它可以很好地提供静态文件。我决定使用Gunicorn和Nginx代替runserver命令。所以,我编辑了我的/etc/nginx/sites-available/mysite文件,如下所示:

server {
    listen 80;
    server_name xxx.xxx.xxx.133;

    access_log off;

    location /static/ {
        alias /opt/myenv/pysauce/static;
    }

    location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}

我还将STATIC_URL中的mysite/settings.py更改为我的Nginx location /static/文件中的sites-available。然后我用gunicorn mysite.wsgi:application开始了枪炮,我能够进入现场。我知道Gunicorn无法提供静态文件,但我知道Nginx可以。

当我访问我的网站时,真正奇怪的部分是我的样式表没有被提供,但自定义字体也在样式表的静态目录中。我可以通过输入我的地址栏/static/css/foundation.css来确认这一点,结果导致404错误。但是,当我输入地址时,/static/fonts/UbuntuMono-B.ttf会提示下载。为什么样式表没有服务,但其他静态文件是?

3 个答案:

答案 0 :(得分:2)

静态文件权限应该存在问题。尝试这两个命令

id

通过这种方式,您将允许用户通过浏览器访问您的静态文件。

答案 1 :(得分:1)

使用您的浏览器访问/ static / css /它可以工作吗? 如果无法访问,请检查您的服务器文件夹权限。

答案 2 :(得分:1)

我鼓励你做的第一件事是保留一个日志文件。将以下行放在配置文件中:

access_log /dir/to/your/access.log
error_log /dir/to/your/error.log

接下来,打开日志以查看nginx无法访问这些文件的原因。如果你看到

[Errno 13] Permission denied

然后,这是一个权限问题,请使用以下命令授予访问权限:

chmod -R a+x static