【问题标题】:Django on a Mac: Apache with mod_wsgi configuration problemsMac 上的 Django:Apache 与 mod_wsgi 配置问题
【发布时间】:2012-02-27 12:47:43
【问题描述】:

我正在尝试使用 mod_wsgi 在 Apache 上运行本地 Django 服务器。我在 Mac 上运行开箱即用的 Apache。

hobbes3@hobbes3:~/Sites/mysite$ apachectl -v
Server version: Apache/2.2.21 (Unix)
Server built:   Nov 15 2011 15:12:57

Apache 正确加载 mod_wsgi。

hobbes3@hobbes3:~/Sites/mysite$ apachectl -t -D DUMP_MODULES | grep wsgi
Syntax OK
wsgi_module (shared)

在我的httpd.conf 文件中,我加载了apache_django_wsgi.conf,即

WSGIDaemonProcess django
WSGIProcessGroup django

Alias /mysite/ "/Users/hobbes3/Sites/mysite/"
<Directory "/Users/hobbes3/Sites/mysite">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>

WSGIScriptAlias /mysite "/Users/hobbes3/Sites/mysite/apache/django.wsgi"

<Directory "/Users/hobbes3/Sites/mysite/apache">
Allow from all
</Directory>

我的django.wsgi 文件是

import os
import sys

paths = [ '/Users/hobbes3/Sites/mysite',
          '/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages',
]

for path in paths:
    if path not in sys.path:
        sys.path.append(path)

sys.executable = '/usr/local/bin/python'
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

我也可以重新启动 Apache 而不会出现任何错误。但是当我尝试访问 http://localhost/mysite 时,我的浏览器提示我有 500 内部服务器错误。

我的 Apache 错误日志显示(我截断了日期和时间):

mod_wsgi (pid=73970): Exception occurred processing WSGI script '/Users/hobbes3/Sites/mysite/apache/django.wsgi'.
Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 250, in __call__
    self.load_middleware()
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/core/handlers/base.py", line 39, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/utils/functional.py", line 276, in __getattr__
    self._setup()
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/conf/__init__.py", line 89, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'mysite.settings' (Is it on sys.path?): No module named mysite.settings

我不知道为什么它不能导入mysite.settings,我不是在sys.path 中包含了那个吗?

settings.py 的完整路径是/Users/hobbes3/Sites/mysite/

【问题讨论】:

    标签: django apache mod-wsgi


    【解决方案1】:

    您已在路径中包含mysite,但您引用了mysite.settings。所以 Python 正在寻找一个 mysite 模块 within 它在路径上找到的目录。请改用settings

    【讨论】:

    • 哇,这是一个简单的修复。但现在我有新的错误(来自 Apache 日志):TemplateSyntaxError: Caught ImproperlyConfigured while rendering: Error loading MySQLdb module: No module named MySQLdb。我知道我的 Django settings.py 可以与 MySQLdb 一起使用,因为 mysite 在我使用 django-admin.py runserver 时可以使用。如果您无法弄清楚,请不要担心。我会发布一个新问题。不过还是谢谢!
    • 这几乎肯定是 Python 版本问题:mod_wsgi 是针对某个版本编译的,但您告诉它查看 homebrew 2.7 站点包。您需要一个 2.7 特定版本的 mod_wsgi。
    • 我将WSGIPythonHome /usr/local/Cellar/python/2.7.2/ 添加到apache_django_wsgi.conf,但这似乎并没有解决问题。更新后的错误说 TemplateSyntaxError: Caught ImproperlyConfigured while rendering: Error loading MySQLdb module: dlopen(/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.4-x86_64.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib Referenced from: /usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.4-x86_64.egg/_mysql.so
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 2011-02-04
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2021-02-05
    • 2011-11-26
    相关资源
    最近更新 更多