Django / Apache / Mod_WSGI - 静态文件的HTTP 404错误

时间:2014-12-16 09:58:49

标签: python django apache mod-wsgi

我正在尝试在Windows上使用Django + Apache + WSGI。

我一直在使用Bitnami堆栈,因此它负责安装Apache。我能够在Django上放置一个Django项目,然而,它加载网页时没有任何静态文件(css,js)。所以我打开了Apache日志,所有静态文件都显示为404。

这是我的httpd-app.conf:

<Directory "E:/Bitnami/djangostack-1.6.7-1/apps/django/django_projects/Dashboard_Web/Dashboard_Web">
    Options +MultiViews
    AllowOverride All
    <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
        Options All
    </IfVersion>
    Options +ExecCGI


WSGIApplicationGroup %{GLOBAL}
    <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
        Options All
    </IfVersion>
    Options All
    AllowOverride All
    Options Indexes FollowSymLinks
    Options +ExecCGI           
</Directory>


Alias /static/ 'E:/Bitnami/djangostack-1.6.7-1/apache2/static/'

<Directory 'E:/Bitnami/djangostack-1.6.7-1/apache2/static'>
    <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
        Options All
    </IfVersion>
        Require all granted
    Options All
    AllowOverride All
    Options Indexes FollowSymLinks
</Directory>

<Directory />
    Require all granted
</Directory>

WSGIScriptAlias /Dashboard_Web 'E:/Bitnami/djangostack-1.6.7-1/apps/django/django_projects/Dashboard_Web/Dashboard_Web/wsgi.py'

这是我的settings.py:

STATIC_URL = '/static/'
STATIC_ROOT = "E:/Bitnami/djangostack-1.6.7-1/apache2/static/"

对于静态文件,我使用了python manage.py collectstatic,它会生成所有静态文件"E:/Bitnami/djangostack-1.6.7-1/apache2/static/“,因此我可以使用Fabric自动执行它(所以我不需要通过自己键入python manage.py collectstatic来更新静态文件。

别名似乎指向正确的文件夹,因为它可以在Windows资源管理器中搜索。所以我不确定为什么会这样,有人能指出我正确的方向吗?

感谢。

编辑:这是html页面中的内容

<script type="text/javascript" src="/static/WebApp/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/static/WebApp/login.js"></script>
<script type="text/javascript" src="/static/WebApp/bootstrap-3.2.0-dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/WebApp/zxcvbn-master/zxcvbn.js"></script>
<script type="text/javascript" src="/static/WebApp/jquery.pwstrength.bootstrap-1.2.2/dist/pwstrength-bootstrap-1.2.2.min.js"></script>

这是我链接到静态文件的方式

{% load staticfiles %}
<script type="text/javascript" src="{% static 'WebApp/jquery-2.1.1.min.js' %}"></script>
<script type="text/javascript" src="{% static 'WebApp/index.js' %}"></script>
<script type="text/javascript" src="{% static 'WebApp/bootstrap-3.2.0-dist/js/bootstrap.min.js' %}"></script>
<script type="text/javascript" src="{% static 'WebApp/flot/jquery.flot.js' %}"></script>
<script type="text/javascript" src="{% static 'WebApp/DataTables-1.10.2/media/js/jquery.dataTables.min.js' %}"></script>

1 个答案:

答案 0 :(得分:1)

在我的情况下,我只需要为静态文件制作Alias,在您的情况下,我的配置将如下所示:

WSGIDaemonProcess Dashboard_Web python-path=E:/Bitnami/djangostack-1.6.7-1/apps/django/django_projects/Dashboard_Web/
WSGIScriptAlias /Dashboard_Web E:/Bitnami/djangostack-1.6.7-1/apps/django/django_projects/Dashboard_Web/Dashboard_Web/wsgi.py process-group=Dashboard_web

Alias /static/ E:/Bitnami/djangostack-1.6.7-1/apache2/static/

<Directory E:/Bitnami/djangostack-1.6.7-1/apps/django/django_projects/Dashboard_Web/>

Order allow,deny

Allow from all

</Directory>

当您运行多个django应用程序时,使用此WSGIDaemonProcess是值得的。此外,您的问题可能由您的系统引起,您可能会尝试使用“\”而不是“/”,例如:

Alias /static/ E:\Bitnami\djangostack-1.6.7-1\apache2\static\