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(我以前没有使用过)。如果有效的话,我会告诉你的!
按照本教程重新安装everything之后,现在一切都很好。看起来我在配置上犯了一些错误。
我在这里也使用了Django 1.7,所以Django 1.8可能也是我问题的原因(尽管这真的不太可能)