Django на Mac: Apache с проблемами конфигурации mod_wsgi - PullRequest
2 голосов
/ 27 февраля 2012

Я пытаюсь запустить локальный сервер Django на Apache с mod_wsgi. Я использую готовый Apache на Mac.

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/.

1 Ответ

2 голосов
/ 27 февраля 2012

Вы включили mysite в путь, но вы указали mysite.settings. Поэтому Python ищет mysite модуль в каталогах, которые он находит по пути. Вместо этого используйте settings.

...