如何托管Django项目的管理静态文件?

时间:2011-09-30 13:16:09

标签: django apache django-admin django-staticfiles

我听说我应该使用Apache在生产环境中提供静态文件。我在理解如何做到这一点时遇到了一些问题。我的项目的静态网址为/static/django.contrib.admin的静态网址为/static/admin/。这是我服务器上的两个完全独立的目录,我很难做到这一点:

Alias /static /path/to/site.com/static
Alias /static/admin /usr/local/.../django/contrib/admin/media

因为它们重叠。

我该怎么做?我真的必须将contrib admin静态文件夹复制到我自己的文件中吗?

3 个答案:

答案 0 :(得分:1)

首先,没有人说你必须从与其他人相同的基本路径提供管理静态文件。您可以将ADMIN_MEDIA_PREFIX设置为您喜欢的任何内容。

但是,最简单的方法就是将静态文件夹中的符号链接添加到django / contrib / admin / media。

答案 1 :(得分:1)

常见解决方案是使用/ media /管理媒体静态文件,因此它可以在settings.py

ADMIN_MEDIA_PREFIX = '/media/'

并在虚拟主机配置中:

Alias /media /path/to/django/contrib/admin/media/
<Location /media>
    SetHandler None
</Location>

答案 2 :(得分:0)

您可以反转Alias条目的顺序,Apache将按预期对其进行解析:

Alias /static/admin /usr/local/.../django/contrib/admin/media
Alias /static /path/to/site.com/static

这是因为当Apache加载其配置时,它会从上到下的角度存储条目。因此,它首先尝试匹配/static/admin,然后如果URI不匹配,则会尝试匹配/static