【问题标题】:Django plugged into Apache not working like Django standalone插入 Apache 的 Django 不像 Django 独立工作
【发布时间】:2015-09-20 13:47:17
【问题描述】:

我在尝试使用 Apache 将我的 django 站点投入生产时遇到了一大堆错误。终于对 mod_wsgi 进行了排序并且 Apache 至少似乎正在尝试加载该站点,当主页无法加载时,我在调试详细信息中看到了许多令人困惑的问题。

当我使用 python manage.py runserver 10.10.10.214:8080 启动网站时,这些错误都不会出现 - 那样可以 100% 正常工作

  1. 导入错误-我不能from x import y-由于某种原因它只允许我做from x import *一个例子是#from django.conf.urls import patterns, include, url给出了一个错误-我不得不更改为from django.conf.urls.defaults import *
  2. 权限错误 - 例如,我必须对之前运行良好的 DB 文件进行 chmod。我想没什么大不了的,但我只是想知道为什么
  3. DB 字段错误:Cannot resolve keyword 'user_id' into field. Choices are: end_date, id, singleDate, start_date, user user_id 在独立模式下工作得很好。
  4. Apache 日志给出了像 TemplateSyntaxError: Caught ImportError while rendering: No module named staticfiles 这样的错误,我只是懒洋洋地绕过了,在 settings.py 中注释掉了 django.contrib.staticfiles。这没有解决任何问题,不用说

几乎感觉文件是在独立的基础上处理的,而不是在 django 框架内。有没有人经历过这种出牙问题?我愚蠢地认为我可以插入。我有一种(毫无根据的)乐观的感觉,它一定只是某个文件中的指令。

干杯,亚瑟

【问题讨论】:

    标签: python django apache mod-wsgi


    【解决方案1】:

    你确定目标系统安装了相同版本的Django吗?

    mod_wsgi 是否已针对您要使用的 Python 版本进行编译?一个常见的错误是人们没有意识到 mod_wsgi 实际上是针对不同的 Python 版本的,因此没有像您期望的那样使用相同的 Python 安装,因此使用了不同版本的包。

    关于权限错误,这是因为在 Apache 下运行的代码默认以 Apache 用户身份运行。它不会像手动运行时那样拥有访问权限。您还必须小心地假设进程的工作目录是什么。

    为了尝试解决问题,您最好在开发环境中尝试使用 mod_wsgi-express。这样开发环境更接近您的目标系统。

    【讨论】:

    • 再次感谢 Graham 的宝贵意见。我会通读你的博客,虽然我今晚有几张票要工作,所以我可能还没有时间去做。我有一个很奇怪的设置;我们公司的 RHEL 附带 Python 2.6,我还安装了 Python 2.7,随着我对它的深入了解,我注意到我已经附加了 sys.path 导致包导入方面的冲突。我也在运行一个稍微过时的 Django,因为我担心更新它的后果......
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 2011-06-23
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多