2010-04-06 16 views
5

Tengo problemas para hacer que django funcione en apache 2.2 con mod_wsgi. Django está instalado y mod_wsgi también. Incluso puedo ver una página 404 al acceder a la ruta y puedo iniciar sesión en django admin. Pero si quiero instalar el módulo de etiquetado me sale el siguiente error:Problemas de configuración con django y 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 

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

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

intento Haz que esto funcione desde hace unos días y he leído varios blogs y respuestas aquí, pero nada funcionó.

Editar:

Ahora he probado con this blog post y mi archivo wsgi ahora se ve así:

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

de administración sigue trabajando, pero estoy consiguiendo el mismo error cuando intento para instalar el módulo de etiquetado

+0

¿Podría mostrarnos una ruta de acceso absoluta a settings.py? –

+0

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

Respuesta

4

En primer lugar,

  • Desde sus trabajos de administración, el ajuste con wsgi es bueno. No te molestes en cambiarlo/editarlo.

para asegurarse de que no es un problema de configuración de Apache/mod-WSGI, puede ejecutar el servidor de desarrollo de la máquina de producción

python manage.py runserver 0:8080 

Luego apunta su navegador a

http://yoursite.com:8080/ 

Debes ver exactamente el mismo comportamiento.

Entonces,

Para depurar este problema:

  • En el intérprete de Python en el servidor, intente import tagging. Claramente, desde su traceback, import tagging es donde se produce un error y por eso, la configuración no se puede importar.

  • Luego, simplemente elimine el paquete que contiene el etiquetado, y realice una nueva instalación con el siguiente comando, que sabe cómo instalar paquetes, así.

.

sudo pip install django-tagging 
+0

etiquetado de importación no funciona, incluso con el servidor de desarrollo: Rastreo (llamada más reciente pasado): Archivo "", línea 1, en ImportError: Sin módulo denominado etiquetado – Jimbo

+1

Jimbo: Eso es exactamente lo que predije. ¡Ahora puede leer mi respuesta cuidadosamente para resolver su problema! –

+0

nunca usó pip antes, pero funcionó. no sé qué causó el problema Espero que sea etiquetado específico para que no tenga el mismo problema con otro paquete más adelante ... gracias – Jimbo

4

¿Has leído Graham Dumpleton's blog post on Django and WSGI? Hace un buen trabajo describiendo algunos problemas de configuración comunes, y específicamente toca en mysite.settings contra settings.

ACTUALIZACIÓN: Lea los excelentes comentarios de Graham Dumpleton a continuación.

ACTUALIZACIÓN 2: Como Graham y becomingGuru han señalado, el problema no está con WSGI en absoluto. En su lugar, es un problema con su instalación de django-tagging. Tome la sugerencia de becomingGuru y use pip para instalar django-tagging.

+0

Espero que solucione su problema específico. –

+0

Todavía tiene el mismo problema:/ – Jimbo

+5

Entonces es probable que tenga un problema de permisos. Apache se ejecuta como un usuario especial y no tú. Por lo tanto, el usuario de Apache debe tener acceso a los directorios donde está el sitio de Django, más todos los directorios principales hasta ese punto. Si tiene rwx ------ en su cuenta de inicio, Apache no podrá ver el interior de su cuenta. –

Cuestiones relacionadas