2010-04-06 13 views
5

Mam problemy z uzyskaniem Django do pracy nad Apache 2.2 z mod_wsgi. Django jest zainstalowane i również mod_wsgi. Widzę nawet stronę 404 podczas dostępu do ścieżki i mogę się zalogować do administratora django. Ale jeśli chcę zainstalować moduł znakowania pojawia się następujący błąd:Problemy z konfiguracją django i 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 

Moje 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> 

Moja 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() 

próbuję działa to od kilku dni i przeczytałem tutaj kilka blogów i odpowiedzi, ale nic nie działało.

Edit:

Teraz próbowałem go this blog post i mój plik WSGI teraz wygląda tak:

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() 

administracja nadal pracuje, ale ja dostaję ten sam błąd, gdy próbuję zainstalować moduł tagowania.

+0

Czy możesz pokazać nam absolutną ścieżkę do pliku settings.py? –

+0

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

Odpowiedz

4

Najpierw

  • Od swoich prac administracyjnych, ustawienie z WSGI jest dobra. Nie przejmuj się zmianą/edycją.

Aby upewnić się, że nie jest to problem Ustawienie Apache/mod-WSGI można uruchomić serwer deweloperski z maszyny produkcyjnej

python manage.py runserver 0:8080 

Następnie należy wpisać w przeglądarce

http://yoursite.com:8080/ 

Musisz zobaczyć dokładnie to samo zachowanie.

Następnie

Do debugowania tego problemu:

  • na powłoce python na serwerze, spróbuj import tagging. Najwyraźniej z twojego śledzenia, import tagging jest tam, gdzie powstaje błąd i dlatego nie można zaimportować ustawień.

  • Następnie, po prostu usuń pakiet zawierający znaczniki i wykonaj nową instalację za pomocą następującego polecenia, które dobrze wie, jak zainstalować pakiety.

.

sudo pip install django-tagging 
+0

import tagowanie nie działa, nawet z serwera rozwoju: Traceback (najnowsza rozmowę ostatni): Plik "", wiersz 1, w ImportError: No module o nazwie tagowania – Jimbo

+1

Jimbo: Thats dokładnie to, co przewidział. Możesz teraz uważnie przeczytać moją odpowiedź, aby rozwiązać swój problem! –

+0

Nigdy wcześniej nie korzystałem z pip, ale zadziałało. nie wiem, co spowodowało problem. Mam nadzieję, że to oznaczenie tagami, więc nie mam tego samego problemu z innym pakietem później ... dziękuję – Jimbo

4

Czy czytałeś Graham Dumpleton's blog post on Django and WSGI? Wykonuje całkiem niezłą pracę opisując niektóre typowe problemy z konfiguracją, a konkretnie dotyka mysite.settings vs. settings.

AKTUALIZACJA: Przeczytaj świetne komentarze Grahama Dumpletona poniżej.

UPDATE 2: Jako że zarówno Graham, jak i Guru wskazały, problem nie dotyczy w ogóle WSGI. Jest to problem związany z instalacją django-tagging. Zasięgnij porady Guru i użyj pip, aby zainstalować django-tagging.

+0

Mam nadzieję, że naprawi twój konkretny problem. –

+0

Nadal mam ten sam problem:/ – Jimbo

+5

Prawdopodobnie wystąpił problem z uprawnieniami. Apache działa jako specjalny użytkownik, a nie ty. Dlatego katalogi, w których znajduje się witryna Django, a także wszystkie katalogi nadrzędne do tego momentu, muszą być dostępne dla użytkownika Apache. Jeśli masz konto rwx ------ na swoim koncie domowym, Apache nie będzie mógł zobaczyć twojego konta. –

Powiązane problemy