静态(管理员)文件似乎没有正确提供

时间:2014-09-07 22:13:30

标签: django nginx uwsgi

Django在管理面板上提供静态文件时遇到问题。

调用http://vbox.me/admin/(其中vbox.me别名为VM的IP)会导致出现没有样式表的空白页。

虽然调用http://vbox.me/static/admin/css/base.css,这是打开http://vbox.me/admin/加载的样式表的一部分,但会显示正确的文件。

以下是一些基本信息:

  • 我最近开始尝试使用Django。
  • 我当前的Django版本是1.8。
  • 我正在运行nginx(在Windows 7上的VirtualBox中的Arch Linux上),它将每个非静态文件传递给uwsgi
  • uwsgi和nginx使用systemd作为服务运行
  • 独立运行Django开发服务器不会导致给定的奇怪行为。

Nginx配置文件:

# ...
http {
    sendfile on;

    upstream django {
        server unix:/tmp/uwsgi.sock;
    }

    server {
        # ...
        location /static {
            # static directory of the django project
            alias /home/martin/projects/django_test/static;
        }

        location / {
            uwsgi_pass django;
            include /etc/nginx/uwsgi_params;
        }
    }
}

uwsgi的INI文件:

[uwsgi]
chdir=/home/martin/projects/django_test
wsgi-file=django_test/wsgi.py
chmod-socket=666
socket=/tmp/uwsgi.sock
master=true
vacuum=true

Django项目中settings.py的重要部分:

STATIC_ROOT = '/home/martin/projects/django_test/static/'

# using vbox.me to make sure the browser does not make up some strange url.
STATIC_URL = 'http://vbox.me/static/'

我差不多"离开黑暗",我只能猜测我在配置uwsgi或Django时犯了一些错误,因为nginx似乎完美地服务于静态文件(至少当明确要求他们......)

提前致谢!

编辑:我将对用于部署应用的所有工具进行全新设置,以确保我没有犯错。另外,这次我将使用virtualenv(我之前没有使用过)。我会告诉你这是否有效!

1 个答案:

答案 0 :(得分:0)

this tutorial之后全新安装所有之后,现在一切正常。看起来我在配置上犯了一些错误。

我也在这里使用过Django 1.7,所以Django 1.8也可能是导致我的问题的原因(尽管那确实不太可能)