【问题标题】:Django Admin Static Files on ApacheApache 上的 Django 管理静态文件
【发布时间】:2014-10-31 10:00:16
【问题描述】:

这里有很多关于同一主题的帖子,我已经尝试了尽可能多的我认为适用的帖子。然而,我仍然有这个错误。除了管理员的静态文件之外,我构建的 django 网站的一切都很好。

版本:Django 1.6、Apache 2.4.7、Ubuntu 14.04

好的 - 我已经运行了 manage.py collectstatic,这里是静态文件夹:

/srv/bahai-site/bahai-site/soul/static

这包含四个文件夹:1) admin/ 2) bootstrap/ 3) core/ 和 4) flags/

在这些文件夹中,我可以看到所有预期的静态文件,并且它们包含我预期的代码。

查看网站本身的静态文件时,/static/core/css/desktop_992.css 之类的内容正确加载,而 /static/admin/css/base.css 会引发 404。

http.conf 中的 Apache 指令:

Alias /static/ /srv/bahai-site/bahai-site/soul/static/

<Directory /srv/bahai-site/bahai-site/soul/static/>
Allow from all
</Directory>

WSGIScriptAlias / /srv/bahai-site/soul/soul/wsgi.py
WSGIPythonPath /srv/bahai-site/soul/soul:/srv/envelope/bahai-site/lib/python2.7/site-packages

<Directory /srv/bahai-site/soul/soul>
<Files wsgi.py>
Allow from all
</Files>
</Directory>

附带问题:请注意 WSGIScriptAlias 和 WSGIPythonPath 仅包含一个“bahai-site/”目录级别,而不是实际存在于“/srv/”之后的两个目录级别。为什么网站运行良好?这不应该造成问题吗?

无论如何,我在这里做错了什么?如何让这些管理静态文件启动并运行?

【问题讨论】:

  • 听起来 django 没有访问这些目录的权限。运行 collectstatic 时是否运行了 sudo 命令?
  • 我尝试使用 sudo 运行该命令,但没有任何变化。管理文件已经被收集到静态文件夹中,这给了我复制的 0 个静态文件,nnn 文件未修改消息

标签: django apache


【解决方案1】:

就 pythonpath 而言,我个人没有将它包含在我的 apache 虚拟主机配置文件中,它可以工作。也许这不需要?老实说,我并不是很精通服务器安装。这似乎是一个权限问题。

我会使用 sudo 运行 collectstatic,然后我还要确保静态文件夹具有 www-data 组权限,这是 apache 开箱即用的权限。

如果您需要帮助在 Ubuntu 中设置文件夹的权限,请在此处查看此链接。 https://askubuntu.com/questions/244406/how-do-i-give-www-data-user-to-a-folder-in-my-home-folder

【讨论】:

  • 我不确定python路径,我只是按照djangoproject网站上的说明进行操作:docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi
  • 无论如何,sudo colletstatic 没有帮助,我已授予父目录的适当权限
  • 问题可能出在您的 settings.py 文件中。你设置了 satic_url 和 media_url 吗?
  • 我有这样的静态文件: STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATIC_URL = '/static/' 我目前没有在项目中使用任何媒体,所以我不使用没有那个设置。
【解决方案2】:

问题是我用相互竞争的指令为 Apache 更新了两个不同的配置文件。

其他初学者注意事项:

指令(即...之类的东西)可以放置在 apache2 根目录中的任何文件中——在我的例子中是 /etc/apache2/ 中的任何文件。 (高级用户的问题:这仅适用于 Ubuntu?还是几乎任何 Linux/Unix?)这会让您感到困惑,因为如果您使用来自多个在线帖子/文档的信息来解决问题,您可能会有各种各样的大杂烩人们的 Apache 配置偏好/样式。这就是我的问题。

作为初学者,您可能希望看到可以将配置/自定义(在本例中为指令)放入的某种单一位置。在 Apache 上并非如此。您可以将其中任何一个放在任何地方。一旦您提高了对 Apache 的了解,这可能会很好,但是当您刚开始时,这很糟糕。

我的解决方法是检查我在 /etc/apache2/ 文件夹中触及的所有文件,并将所有规则合并到一个地方。这导致我删除了重复/冲突的规则,从而解决了问题。

现在我想我需要和治疗师谈谈....

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 2012-03-19
    • 2017-02-21
    • 2011-08-06
    • 2012-12-01
    • 1970-01-01
    • 2012-05-05
    • 2011-03-15
    • 2012-02-03
    相关资源
    最近更新 更多