2010-04-06 7 views
5

У меня проблемы с получением django для работы с apache 2.2 с mod_wsgi. Django установлен и mod_wsgi тоже. Я даже вижу страницу 404 при доступе к пути, и я могу войти в django admin. Но если я хочу, чтобы установить модуль мечения я получаю следующее сообщение об ошибке:Проблемы с конфигурацией с django и mod_wsgi

Traceback (most recent call last): 
    File "setup.py", line 49, in <module> 
    version_tuple = __import__('tagging').VERSION 
    File "/home/jim/django-tagging/tagging/__init__.py", line 3, in <module> 
    from tagging.managers import ModelTaggedItemManager, TagDescriptor 
    File "/home/jim/django-tagging/tagging/managers.py", line 5, in <module> 
    from django.contrib.contenttypes.models import ContentType 
    File "/usr/lib/python2.5/site-packages/django/contrib/contenttypes/models.py", line 1, in <module> 
    from django.db import models 
    File "/usr/lib/python2.5/site-packages/django/db/__init__.py", line 10, in <module> 
    if not settings.DATABASE_ENGINE: 
    File "/usr/lib/python2.5/site-packages/django/utils/functional.py", line 269, in __getattr__ 
    self._setup() 
    File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 40, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 75, in __init__ 
    raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e) 
ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Does it have syntax errors?): No module named mysite.settings 

Мой httpd.conf:

Alias /media/ /home/jim/django/mysite/media/ 

<Directory /home/jim/django/mysite/media> 
    Order deny,allow 
    Allow from all 
</Directory> 

Alias /admin/media/ "/usr/lib/python2.5/site-packages/django/contrib/admin/media/" 

<Directory "/usr/lib/python2.5/site-packages/django/contrib/admin/media/"> 
    Order allow,deny 
    Allow from all 
</Directory> 

WSGIScriptAlias /dj /home/jim/django/mysite/apache/django.wsgi 

<Directory /home/jim/django/mysite/apache> 
    Order deny,allow 
    Allow from all 
</Directory> 

Мой django.wsgi:

import sys, os 

sys.path.append('/home/jim/django') 
sys.path.append('/home/jim/django/mysite') 

os.chdir('/home/jim/django/mysite') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 

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

Стараюсь заработайте это с нескольких дней и прочитайте здесь несколько блогов и ответов, но ничего не получилось.

Edit:

Теперь я попробовал с this blog post и мой файл WSGI теперь выглядит следующим образом:

import sys 
sys.path.insert(0, '/home/jim/django/mysite') 
sys.path.insert(0, '/home/jim/django') 

import settings 

import django.core.management 
django.core.management.setup_environ(settings) 
utility = django.core.management.ManagementUtility() 
command = utility.fetch_command('runserver') 

command.validate() 

import django.conf 
import django.utils 

django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE) 

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

админ все еще работает, но я получаю ту же ошибку, когда я пытаюсь для установки модуля тегов.

+0

Не могли бы вы показать нам абсолютный путь к settings.py? –

+0

@Ruslan Spivak /home/jim/django/mysite/settings.py – Jimbo

ответ

4

Во-первых,

  • С вашего администратора работает, установка с WSGI хорошо. Не беспокойтесь об изменении или редактировании.

Чтобы убедиться, что это не является проблемой настройки Apache/мод-WSGI, вы можете запустить сервер разработки от производственной машины

python manage.py runserver 0:8080 

Затем направьте ваш браузер

http://yoursite.com:8080/ 

Вы должны видеть точно такое же поведение.

Затем

Для отладки этой проблемы:

  • На питона оболочки на вашем сервере, попробуйте import tagging. Очевидно, что из вашего трассировки import tagging - это то место, где он поднимает ошибку и поэтому настройки не могут быть импортированы.

  • Затем просто удалите пакет с тегами и выполните новую установку следующей командой, которая знает, как устанавливать пакеты, ну.

.

sudo pip install django-tagging 
+0

импорт тегов не работает, даже с сервером разработки: TraceBack (самый последний вызов последнего): Файл «», строка 1, в ImportError: Нет модуль с именем мечения – Jimbo

+1

Джимбо: Вот именно то, что я предсказывал. Теперь вы можете внимательно прочитать мой ответ, чтобы решить вашу проблему! –

+0

никогда не использовал пип, но он сработал. не знаю, что вызвало проблему. Я надеюсь, что это была специальная маркировка, так что у меня нет той же проблемы с другим пакетом позже .. спасибо – Jimbo

4

Вы прочитали (а) Graham Dumpleton's blog post on Django and WSGI? Это довольно хорошая работа по описанию некоторых общих проблем с конфигурацией, а конкретно касается mysite.settings против settings.

ОБНОВЛЕНИЕ: Пожалуйста, ознакомьтесь с замечательными замечаниями Грэма Дамплтона ниже.

ОБНОВЛЕНИЕ 2: Как указывали оба Грэма и стать Гуру, проблема не связана с WSGI. Это проблема с установкой django-tagging. Возьмите консультацию Гуру и используйте pip для установки django-tagging.

+0

Надеюсь, он исправит вашу конкретную проблему. –

+0

По-прежнему такая же проблема:/ – Jimbo

+5

Тогда у вас, вероятно, есть проблема с разрешениями. Apache работает как специальный пользователь, а не вы. Поэтому каталоги, в которых находится сайт Django, плюс все родительские каталоги до этой точки, должны быть доступны пользователю Apache. Если у вас есть rwx ------ на домашней учетной записи, Apache не сможет видеть вашу учетную запись. –

Смежные вопросы