【问题标题】:Apache is not serving static files from Django appApache 不提供来自 Django 应用程序的静态文件
【发布时间】:2014-07-19 14:55:45
【问题描述】:

我不知道我的 django 项目的虚拟主机出了什么问题,但简单的问题是,无论我对此文件进行什么修改,仍然会在 apache 的错误日志中输出相同的内容,并且不加载任何 css 或 js 文件,我可以看到 Apache 正在根 web 文件夹中寻找静态和媒体文件:/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 defaultand 现在一切都像魅力一样!

【问题讨论】:

  • 您的 VirtualHost 定义可能根本没有被使用。一般来说,在 VirtualHost 中使用 IP 地址是一个坏主意,因为它太容易塞满东西。特别是使用 127.0.0.1 将是一个不好的用途。尝试使用“*”而不是“127.0.0.1”。还将您的 WSGIScriptAlias 也放在 VirtualHost 中。
  • 我之前试过,它是*并更改为127.0.0.1仅用于测试并没有任何变化,WSGIScriptAlias放在VirtualHost中时永远不会起作用,只有在外面时,我不知道出了什么问题有了这个,如果这可能是问题。
  • 听起来您可能有多个相互冲突的 VirtualHost 定义。您还设置了哪些其他 VirtualHost 定义?
  • 我认为您应该回答自己的问题并将其标记为答案,而不是将答案放在问题中。

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


【解决方案1】:

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

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

在您的终端中,转到 Django 项目根文件夹并输入以下内容:

python manage.py collectstatic

阅读更多https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/

【讨论】:

  • 所有的css内容和js文件都放在一个文件夹中,在这种情况下是静态文件夹,我之前运行过那个命令,所以我不需要在一个文件夹中再次收集,指令很好,路线很好,但由于某种原因,我无法掌握在 web 根文件夹中查找 fot 静态文件的 Apache 剧照。
猜你喜欢
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 2012-03-19
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 2020-09-11
相关资源
最近更新 更多