澄清:以下错误仅适用于管理静态文件,即它特定于与Django管理员对应的静态文件.其余的静态文件完美运行.
问题
基本上,我无法使用ngix服务器访问管理静态文件.
它确实与Django的微服务器一起工作,并且collectstatic正在完成它的工作,这意味着它将文件放在静态文件夹中的预期位置.
网址是正确的,但我不能直接访问管理静态文件,但我可以访问其他人.所以,例如:
>我可以访问此URL(在浏览器中复制它):
myserver.com:8080/static/css/base/base.css
>但我无法访问此其他网址(在浏览器中复制):
myserver.com:8080/static/admin/css/admin.css
我试过了什么?
如果我将admin /目录结构复制到__other_admin_directory_name / __,然后我访问它确实有效
myserver.com:8080/static/__other_admin_directory_name__/css/admin.css
此外,
>我检查了权限,一切都很好.
>我尝试将ADMIN_MEDIA_PREFIX =’/ static / admin /’更改为ADMIN_MEDIA_PREFIX =’/ static / other_admin_directory_name /’,它不起作用.
最后,它似乎是一个重要的线索:
我试图将admin /目录结构复制到__admin_and_then_any_suffix / __中.然后我无法访问
myserver.com:8080/static/__admin_and_then_any_suffix/__/css/admin.css.因此,如果目录的名称以admin开头(例如管理或admin2),则它不起作用.
编辑 – 感谢@sarnold观察:
问题似乎是在Nginx配置文件/ etc / Nginx / sites-available / mysite中
location /static/admin {
alias /home/vl3/.virtualenvs/vl3/lib/python2.7/site-packages/django/contrib/admin/media/;
}
>使用django 1.3(和ADMIN_MEDIA_PREFIX is deprecated now)
>在settings.py中设置STATIC_URL
and STATIC_ROOT
>在Nginx conf中定义一个静态条目(带有斜杠).不需要第二个解决static / admin /的问题:
location /static/ {
alias /path/to/static/;
}
>使用应该收集管理员的collectstatic – >静态/管理员.它将与所有其他收集的静态媒体位于同一位置.
python manage.py collectstatic