2012-02-28 3 views
1

я в настоящее время создать виртуальный хост на Apache, чтобы попытаться разместить мой проект Django в django.localhostDjango + Apache с mod_wsgi. Невозможно загрузить MySQLDb

Мои конфигурации Apache правильны:

[email protected]:~/Sites/mysite$ apachectl configtest 
Syntax OK 

Вот мой ~/Sites/mysite/apache/apache_django_wsgi.conf файл, который получает включены от /etc/apache2/httpd.conf

NameVirtualHost *:80 

<VirtualHost *:80> 
    ServerName django.localhost 
    ErrorLog "/var/log/apache2/django-error_log" 

    <Directory /Users/hobbes3/Sites/mysite> 
     AllowOverride All 
     Options Indexes FollowSymLinks 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIDaemonProcess django.localhost processes=1 threads=1 maximum-requests=1 
    WSGIProcessGroup django.localhost 

    WSGIScriptAlias/"/Users/hobbes3/Sites/mysite/apache/django.wsgi" 
</VirtualHost> 

Вот мой /User/hobbes3/Sites/mysite/apache/django.wsgi

import os 
import sys 

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

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

os.environ[ 'DJANGO_SETTINGS_MODULE' ] = 'settings' 

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

Я знаю по /usr/local/lib/python2.7/site-packages' I have both './django' and './MySQL_python-1.2.3-py2.7-macosx-10.4-x86_64.egg. Я считаю, что я установил их оба с помощью homebrew. И поэтому /usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages указывает на то же место (но я не знаю, как).

Когда я бегу python manage.py runserver, я знаю MySQLdb работает, но я стараюсь посетить django.localhost, я получаю две подобные ошибки о не удалось найти MySQLdb (я усечен дату и время для удобства чтения):

mod_wsgi (pid=76282): Exception occurred processing WSGI script '/Users/hobbes3/Sites/mysite/apache/django.wsgi'. 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__ 
    response = self.get_response(request) 
    File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response 
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) 
    File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception 
    return debug.technical_500_response(request, *exc_info) 
    File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 59, in technical_500_response 
    html = reporter.get_traceback_html() 
    File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 151, in get_traceback_html 
    return t.render(c) 
    File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 123, in render 
    return self._render(context) 
    File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 117, in _render 
    return self.nodelist.render(context) 
    File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render 
    bits.append(self.render_node(node, context)) 
    File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 73, in render_node 
    result = node.render(context) 
    File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 90, in render 
    output = self.filter_expression.resolve(context) 
    File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 536, in resolve 
    new_obj = func(obj, *arg_vals) 
    File "/usr/local/lib/python2.7/site-packages/django/template/defaultfilters.py", line 695, in date 
    return format(value, arg) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 285, in format 
    return df.format(format_string) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format 
    pieces.append(force_unicode(getattr(self, piece)())) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 191, in r 
    return self.format('D, j M Y H:i:s O') 
    File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format 
    pieces.append(force_unicode(getattr(self, piece)())) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/encoding.py", line 71, in force_unicode 
    s = unicode(s) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 206, in __unicode_cast 
    return self.__func(*self.__args, **self.__kw) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 81, in ugettext 
    return _trans.ugettext(message) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 286, in ugettext 
    return do_translate(message, 'ugettext') 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 276, in do_translate 
    _default = translation(settings.LANGUAGE_CODE) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 185, in translation 
    default_translation = _fetch(settings.LANGUAGE_CODE) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 162, in _fetch 
    app = import_module(appname) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 3, in <module> 
    from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME 
    File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/helpers.py", line 3, in <module> 
    from django.contrib.admin.util import (flatten_fieldsets, lookup_field, 
    File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/util.py", line 1, in <module> 
    from django.db import models 
    File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py", line 78, in <module> 
    connection = connections[DEFAULT_DB_ALIAS] 
    File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 33, in load_backend 
    return import_module('.base', backend_name) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 14, in <module> 
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) 
TemplateSyntaxError: Caught ImproperlyConfigured while rendering: Error loading MySQLdb module: No module named MySQLdb 
mod_wsgi (pid=76283): Exception occurred processing WSGI script '/Users/hobbes3/Sites/mysite/apache/django.wsgi'. 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__ 
    response = self.get_response(request) 
    File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response 
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) 
    File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception 
    return debug.technical_500_response(request, *exc_info) 
    File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 59, in technical_500_response 
    html = reporter.get_traceback_html() 
    File "/usr/local/lib/python2.7/site-packages/django/views/debug.py", line 151, in get_traceback_html 
    return t.render(c) 
    File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 123, in render 
    return self._render(context) 
    File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 117, in _render 
    return self.nodelist.render(context) 
    File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render 
    bits.append(self.render_node(node, context)) 
    File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 73, in render_node 
    result = node.render(context) 
    File "/usr/local/lib/python2.7/site-packages/django/template/debug.py", line 90, in render 
    output = self.filter_expression.resolve(context) 
    File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 536, in resolve 
    new_obj = func(obj, *arg_vals) 
    File "/usr/local/lib/python2.7/site-packages/django/template/defaultfilters.py", line 695, in date 
    return format(value, arg) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 285, in format 
    return df.format(format_string) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format 
    pieces.append(force_unicode(getattr(self, piece)())) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 191, in r 
    return self.format('D, j M Y H:i:s O') 
    File "/usr/local/lib/python2.7/site-packages/django/utils/dateformat.py", line 30, in format 
    pieces.append(force_unicode(getattr(self, piece)())) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/encoding.py", line 71, in force_unicode 
    s = unicode(s) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 206, in __unicode_cast 
    return self.__func(*self.__args, **self.__kw) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 81, in ugettext 
    return _trans.ugettext(message) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 286, in ugettext 
    return do_translate(message, 'ugettext') 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 276, in do_translate 
    _default = translation(settings.LANGUAGE_CODE) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 185, in translation 
    default_translation = _fetch(settings.LANGUAGE_CODE) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 162, in _fetch 
    app = import_module(appname) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 3, in <module> 
    from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME 
    File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/helpers.py", line 3, in <module> 
    from django.contrib.admin.util import (flatten_fieldsets, lookup_field, 
    File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/util.py", line 1, in <module> 
    from django.db import models 
    File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py", line 78, in <module> 
    connection = connections[DEFAULT_DB_ALIAS] 
    File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 33, in load_backend 
    return import_module('.base', backend_name) 
    File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 14, in <module> 
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) 
TemplateSyntaxError: Caught ImproperlyConfigured while rendering: Error loading MySQLdb module: No module named MySQLdb 

Извините за длинный журнал ошибок, но я хотел быть полным. Что я делаю неправильно для этой конфигурации?

+2

Использование максимум-запросов = 1 - плохая идея, даже в разработке под mod_wsgi. Также не определяйте процессы = 1. Он по умолчанию использует один процесс и использует параметр «процессы» для любого значения, который технически обозначает его как многопроцессорную систему для WSGI, что не всегда то, что вы хотите. –

+0

Спасибо за подсказку. Но мне все же нужно решить вышеупомянутую ошибку. – hobbes3

ответ

2

Установите PYTHON_EGG_CACHE в сценарии WSGI в том месте, где пользователь, которому Apache запускает ваш код, как можно писать.

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Access_Rights_Of_Apache_User

Приложение не может распаковать файл яйцо Python в любом месте.

+1

Я создал папку 'pylons' под'/usr/local/', тогда я создал другую папку' python-eggs' под 'pylon'. Затем я сделал «chown -R hobbes3: staff/usr/local/pylons/python-eggs', потому что под моим« httpd.conf »пользователь Apache -« hobbes3 », а группа -« штат ». Но это ничего не делало. Я что-то упускаю? – hobbes3

+0

Вы говорите, что вы переопределили User/Group в вашей системе установки Apache, чтобы быть hobbes3 и персоналом? Это было бы ненормально. Если вы хотите запустить процесс веб-приложения Python, так как вы бы просто использовали параметры WSGIDaemonProcess. Вы также установили PYTHON_EGG_CACHE? Обновите свой вопрос с помощью последней информации. –