Apache不提供来自Django应用程序的静态文件

时间:2014-05-29 23:18:10

标签: django apache static mod-wsgi django-staticfiles

我不知道我的虚拟主机对django项目有什么错误,但简单的问题是无论我对此文件做了什么修改仍然从apache输出相同的错误日志而不加载任何css或js文件,我可以看到Apache正在根网页文件夹中寻找静态和媒体文件:/var/www

[Fri May 30 00:58:08 2014] [error] [client 192.168.1.145] File does not exist: /var/www/static, referer: http://192.168.1.143/dgp/login/

我按如下方式设置虚拟主机文件:

  WSGIPythonPath /var/www/dgp_python2_7/bin/python2.7:/var/www/dgp_python2_7/lib/python2.7/site-packages
  WSGIScriptAlias /dgp /var/www/dgp/dgp/dgp/wsgi.py

  <VirtualHost 127.0.0.1:80>
      ServerName www.dgp.dev
      ServerAlias dgp.dev


     AliasMatch ^/([^/]*\.css) /var/www/dgp/dgp/static/$1

     Alias /media/ /var/www/dgp/dgp/media/
     Alias /static/ /var/www/dgp/dgp/static/
     Alias /images/ /var/www/dgp/dgp/images/

    <Directory /var/www/dgp/dgp/static/>
      Order deny,allow
      Allow from all
    </Directory>

    <Directory /var/www/dgp/dgp/media/>
      Order deny,allow
      Allow from all
    </Directory>

     ErrorLog /var/www/dgp/dgp/error.log
     CustomLog /var/www/dgp/dgp/access.log combined
  </VirtualHost>

在settings.py STATIC_ROOT'/var/www/dgp/dgp/static/',其中包含所有css内容。

如何告诉apache或Django寻找正确的目录'/var/www/dgp/dgp/static/'?它让我发疯,我不明白在开发过程中如此复杂的东西对生产而言如此复杂。

问候!

使用解决方案进行编辑

真正的问题是我没有禁用Debian Apache的默认站点(即我正在为之工作的版本)并且有另一种方法来保持虚拟主机,开始时我们必须禁用默认站点使用以下命令:a2dissite default,现在一切都像魅力一样!

1 个答案:

答案 0 :(得分:1)

您可以在项目呈现的html中判断您的静态文件的查找位置。只需在浏览器中查看源代码并查找样式表或javascript include,该文件的完整路径是什么?

我的猜测,你必须运行Django的collect静态脚本,它将收集你所有项目应用程序中的所有静态脚本并将它们放在一个位置。这是部署Django项目的核心部分,如果您在项目中使用多个“应用程序”,这是不可避免的。

终端中的

转到Django项目根文件夹并输入:

python manage.py collectstatic

https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/

了解详情