无法让Apache提供django管理静态文件

dut*_*utt 4 apache django

我正在尝试将Django部署到apache但无法让它为我的静态管理文件提供服务.它似乎是在/ var/www/static下寻找它们,我似乎无法改变它.

除了样式之外,管理站点似乎正在工作.我得到一个标题和一个登录表单.我的django应用程序也在运行.这是未提供服务的管理员的静态文件.

使用Django 1.4.1.

该文件是在/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static并链接到从/家/杜特/ vaccapp /后端/静态/管理员.

apache错误日志说明了这一点

[Sun Sep 30 10:57:20 2012] [error] [client 192.168.1.10] File does not exist: /var/www/home, referer: http://dathui.example.com/vaccapp/admin/
[Sun Sep 30 10:57:20 2012] [error] [client 192.168.1.10] File does not exist: /var/www/home, referer: http://dathui.example.com/vaccapp/admin/
Run Code Online (Sandbox Code Playgroud)

但我不知道如何改变它.

在我的django网站配置中我有

<VirtualHost *:80>
ServerAdmin me@host.com

    ServerRoot "/home/dutt/vaccapp"
    DocumentRoot "/home/dutt/vaccapp"
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /home/dutt/vaccapp/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

Alias /static/ "/home/dutt/vaccapp/backend/static/"
<Directory "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static">
    Order allow,deny
    Options Indexes
    Allow from all
    IndexOptions FancyIndexing
</Directory>
Run Code Online (Sandbox Code Playgroud)

未在apache2.conf中设置ServerRoot.

来自我的settings.py

STATIC_ROOT = '/home/dutt/vaccapp/backend/'
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)

没有添加到STATICFILES_DIRS.

这被添加到我的apache2.conf中

WSGIScriptAlias /vaccapp /home/dutt/vaccapp/backend/wsgi.py
WSGIPythonPath /home/dutt/vaccapp

<Directory /home/dutt/vaccapp>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
Run Code Online (Sandbox Code Playgroud)

Igo*_*rko 7

ADMIN_MEDIA_PREFIX/static/admin/在Django 1.4中默认设置为#Deprecated(现在使用STATIC_URL + 'admin/'.结果相同.

这是apache配置的修复:

Alias /static/admin "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static"
Alias /static "/home/dutt/vaccapp/backend/static"
<Directory "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static">
    Order allow,deny
    Options Indexes
    Allow from all
    IndexOptions FancyIndexing
</Directory>
Run Code Online (Sandbox Code Playgroud)

并且必须将WsgiScriptAlias从主apache配置移动到VirtualHost中.

经过长时间的讨论,我们发现问题是Django没有正确安装admin静态......他们彼此符号链接(非常奇怪).Django重新安装修复它现在工作正常.