【问题标题】:Baby steps to a solution with django and mod-wsgi on os x在 os x 上使用 django 和 mod-wsgi 解决问题的小步骤
【发布时间】:2011-01-21 03:08:18
【问题描述】:

我正在运行 apache / os x 并提供 localhost 页面以在我的笔记本电脑上测试 django。我已经验证了以下所有内容

• python 工作正常并且是最新的 (2.5.1)

• django 可用于 python 并且是最新的 (1,1,0, 'final', 0)

• 在我的 apache 配置中的 apache 模块中加载了 mod_wsgi 模块 - 检查!

• django 应用程序的路径在具有适当权限的 vhost.conf 中 - 好的!

• mod_wsgi vhost.conf 在预期的 django 应用程序目录中经过测试并且工作正常 - 通过 localhost 测试应用程序拉起 200 OK, 'hello world!'

• django 默认应用程序已使用“django-admin.py startproject mysite”创建

• django 应用程序使用开发服务器在端口 8000 上运行良好 - 好的!

• 新 django 应用程序(称为 mysite)的路径位于 python 路径上 - 已验证!

所有这些都经过验证,当我使用 DJANGO_SETTINGS_MODULE settings.py 运行 wsgi 脚本并加载 django 应用程序时,我仍然得到“无法导入设置 'mysite.settings' 等”。

由于这似乎涵盖了基本的故障排除,我是否可以采取任何进一步的步骤来找出问题?

=================

Python 路径有效,已验证。 django 开发服务器在 8000 端口使用命令行运行良好。

apache 配置加载了典型的模块: LoadModule wsgi_module libexec/apache2/mod_wsgi.so

vhost.conf 包含在 apache 配置中,如下所示

名称虚拟主机:*.80

    <Directory /users/useracct/scripts/python>
            Order allow,deny
            Allow from all
    </Directory>

    <Directory /Library/WebServer/Documents>
            Order allow,deny
            Allow from all
    </Directory>
    WSGIDaemonProcess localhost user=username group=staff threads=25
    WSGIProcessGroup localhost

    WSGIScriptAlias /mysite /users/useracct/Sites/mysite/mysite.wsgi

    <Directory /users/useracct/Sites/mysite/>
            Allow from all
    </Directory>

    DocumentRoot /Users/useracct/Sites/

Virtualenv 没有设置这个帐户,所以这是一个不太可能的原因。

========================

和 wsgi 脚本文件(尽量保持最小):


import os, sys
path = '/users/usracct/sites/mysite'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

【问题讨论】:

  • 特别关注sys.path 设置并为您的Django 应用程序提供工作目录(包括settings.py 文件)。
  • 另外,检查应用程序是否通过./manage.py runserver 正确启动 - 如果没有,请发布任何错误消息。
  • 发布 Apache 配置 sn-p 显示您如何将应用程序映射到 mod_wsgi。特别是,展示如何在 Apache 配置中设置 Django 应用程序的路径,以及您是在嵌入式模式还是守护模式下使用 mod_wsgi。
  • 你的 WSGI 脚本文件里有什么?也发布有问题的内容。
  • @Graham 正如你在博客上所说的那样,“没有人应该责备自己”,因为配置错误。在这方面,在开发人员社区中仍然存在一个特定的绊脚石(包括当前案例),涉及建立具有有意义反馈的开发环境的必要曲线。人们不得不想知道为什么配置过程在没有反馈的情况下发展,以使新项目的基本指标到位。 (因此这篇文章中的“婴儿步骤”的标题)。我想在通常不被注意的地方有一个日志。

标签: python django apache macos mod-wsgi


【解决方案1】:

尝试将 /users/useracct/Sites/ a 添加到 wsgi 文件中的 pythonpath 中:

import os
import sys
.....
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')
....

【讨论】:

  • 顺便说一句,mod_wsgi 是个好东西,但我发现 python 环境仍然很难排除故障。我正在做的一件事是一个更加面向反馈的环境。一些最大化测试循环的方法 - 但没有 GUI。当您依赖 GUI 时,它真的开始走下坡路。现在这是一个争论的话题。
  • 毕索沃。你真的阅读过 mod_wsgi 网站上的 Django 集成指南吗?它非常明确地告诉您需要添加该目录。这里的答案是有点聪明,即通过尝试相对于 WSGI 脚本文件来计算它,但是文档中描述了添加目录的需要。阅读“code.google.com/p/modwsgi/wiki/IntegrationWithDjango”。
猜你喜欢
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 2010-12-02
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
相关资源
最近更新 更多