2010-04-06 2 views
5

Ho problemi a far funzionare django su apache 2.2 con mod_wsgi. Anche Django è installato e mod_wsgi. Posso persino vedere una pagina 404 quando accedo al percorso e posso accedere all'amministratore di django. Ma se voglio installare il modulo di tagging ottengo il seguente errore:Problemi di configurazione con django e 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 

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

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

cerco di fallo funzionare da alcuni giorni e ho letto diversi blog e risposte qui, ma non ha funzionato.

Edit:

Ora ho provato con this blog post e il mio file WSGI ora assomiglia a questo:

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

amministrazione sta ancora lavorando, ma sto ottenendo lo stesso errore quando provo per installare il modulo di tagging.

+0

Puoi mostrarci un percorso assoluto per settings.py? –

+0

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

risposta

4

In primo luogo,

  • Dal momento che i lavori di amministrazione, l'impostazione con WSGI è buono. Non preoccuparti di cambiarlo/modificarlo.

per assicurarsi che non è un problema di impostazione Apache/mod-WSGI, è possibile eseguire il server di sviluppo dalla macchina di produzione

python manage.py runserver 0:8080 

Poi puntare il browser su

http://yoursite.com:8080/ 

Devi vedere esattamente lo stesso comportamento.

Poi,

Per il debug di questo problema:

  • Sul guscio pitone sul server, provare import tagging. Chiaramente, dal tuo traceback, import tagging è dove sta generando un errore e questo è il motivo per cui le impostazioni non possono essere importate.

  • Quindi, basta eliminare il pacchetto contenente tagging e fare una nuova installazione con il seguente comando, che sa come installare i pacchetti, beh.

.

sudo pip install django-tagging 
+0

importazione etichettatura non funziona, anche con il server di sviluppo: Traceback (chiamata più recente scorso): file "", linea 1, in ImportError: No module named codifica – Jimbo

+1

Jimbo: Questo è esattamente quello che avevo previsto. Ora puoi leggere attentamente la mia risposta, per risolvere il tuo problema! –

+0

non ha mai usato pip prima, ma ha funzionato. non so cosa abbia causato il problema Spero che sia stato taggato in modo specifico in modo da non avere lo stesso problema con un altro pacchetto in seguito .. grazie – Jimbo

4

Hai letto Graham Dumpleton's blog post on Django and WSGI? Fa un buon lavoro nel descrivere alcuni problemi di configurazione comuni e tocca in particolare mysite.settings rispetto a settings.

AGGIORNAMENTO: leggere gli eccellenti commenti di Graham Dumpleton di seguito.

AGGIORNAMENTO 2: Come hanno sottolineato sia Graham che Guru, il problema non riguarda affatto WSGI. È invece un problema con l'installazione di django-tagging. Prendi il consiglio di Guru e usa pip per installare django-tagging.

+0

Spero che risolva il tuo problema specifico. –

+0

Ancora lo stesso problema:/ – Jimbo

+5

Quindi probabilmente hai un problema con le autorizzazioni. Apache funziona come utente speciale e non tu. Pertanto, le directory su cui si trova il sito Django, oltre a tutte le directory madri fino a quel punto, devono essere accessibili all'utente Apache. Se hai rwx ------ sul tuo account di casa, allora Apache non sarà in grado di vedere all'interno del tuo account. –