Quijost

Webmaster => Programacion Web => Python => Mensaje iniciado por: MalaLeche en Noviembre 20, 2011, 19:22:18 pm

Título: Error 500 con django
Publicado por: MalaLeche en Noviembre 20, 2011, 19:22:18 pm
Hola, estoy tratando de subir un proyecto con los ejemplos que encontré en el foro, pero no logro que se muestren yen el error.log no hay detalles del error, dejo mi configuración.

.htaccess
Código: [Seleccionar]
# htaccess for wsgi

SetHandler wsgi-script
RewriteEngine on

RewriteCond %{REQUEST_URI} !(django.wsgi)
RewriteRule ^(.*)$ django.wsgi/$1 [L]

django.wsgi

Código: [Seleccionar]
#django.wsgi
import os
import sys

path = '/home/malalech/public_html'
path = '/home/malalech/public_html/puebas'

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

os.environ["DJANGO_SETTINGS_MODULE"] = "pueba.settings"

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

No veo el error en la configuración, espero sus comentarios.

Saludos
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 21, 2011, 07:51:50 am
Hola y bienvenido,

Con cPanel tenemos algunas limitaciones para el error_log en Django y estos errores se escriben en el error_log general de root.

En el foro hay algun tema, donde se explica como capturar los errores de la salida estándar de Python a un archivo o bien capturar las excepciones para poder realizar una depuración.

No obstante, no tenemos problema en buscar y mostraros el error cuando no funcione vuestra aplicación Django.

En concreto tu problema parece ser el siguiente:

Código: [Seleccionar]
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX] mod_wsgi (pid=13889): Exception occurred processing WSGI script '/home/malalech/public_html/django.wsgi'.
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX] Traceback (most recent call last):
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/core/handlers/wsgi.py", line 250, in __call__
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]     self.load_middleware()
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/core/handlers/base.py", line 39, in load_middleware
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]     for middleware_path in settings.MIDDLEWARE_CLASSES:
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/utils/functional.py", line 276, in __getattr__
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]     self._setup()
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/conf/__init__.py", line 42, in _setup
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]     self._wrapped = Settings(settings_module)
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/conf/__init__.py", line 89, in __init__
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX]     raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Mon Nov 21 07:43:44 2011] [error] [client XXX.XXX.XXX.XXX] ImportError: Could not import settings 'pueba.settings' (Is it on sys.path?): No module named pueba.settings

Luego parece ser, que recibes un ImportError ya que no encuentra en las rutas que estas definiendo el archivo de pueba.settings y esto se interpreta como un error 500.
Título: Re:Error 500 con django
Publicado por: MalaLeche en Noviembre 21, 2011, 14:05:08 pm
Gracias por tu respuesta shakan, pero sigo con el problema modifique mi django.wsgi de la siguiente manera:

Código: [Seleccionar]
#django.wsgi

import os, sys

sys.path.append('/home/malalech/public_html')
sys.path.append('/home/malalech/public_html/')
sys.path.append('/home/malalech/public_html/pueba')
sys.path.append('/home/malalech/public_html/pueba/')

os.environ['DJANGO_SETTINGS_MODULE'] = 'pueba.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac-eggs'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

y el .htaccess sigue de la misma manera, espero me puedas ayudar ya que no doy con el problema, gracias por su ayuda.
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 21, 2011, 15:35:31 pm
No has realizado bien la modificación. Tu problema no esta en las rutas, sino que no se encuentra el archivo pueba.settings en las rutas que especificas, ya que tampoco existe ningún archivo pueba.settings. Debes crear pueba.settings y especificar su configuración de Django.
Título: Re:Error 500 con django
Publicado por: MalaLeche en Noviembre 21, 2011, 15:53:13 pm
No has realizado bien la modificación. Tu problema no esta en las rutas, sino que no se encuentra el archivo pueba.settings en las rutas que especificas, ya que tampoco existe ningún archivo pueba.settings. Debes crear pueba.settings y especificar su configuración de Django.

Hola, no se supone que el wsgi toma el settings.py del proyecto? que esta dentro de puebas? jamas tuve la necesidad de crear algún archivo diferente en proyectos anteriores, me puedes explicar mejor, saludos y gracias por tu ayuda.
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 21, 2011, 16:12:18 pm
Django obtiene el setttings.py por defecto si no defines otra configuración.

En el código tienes:

Código: [Seleccionar]
os.environ['DJANGO_SETTINGS_MODULE'] = 'pueba.settings'

Luego esta buscando dicho módulo y no encuentra el archivo que debes crear.
Título: Re:Error 500 con django
Publicado por: MalaLeche en Noviembre 21, 2011, 16:25:35 pm
Django obtiene el setttings.py por defecto si no defines otra configuración.

En el código tienes:

Código: [Seleccionar]
os.environ['DJANGO_SETTINGS_MODULE'] = 'pueba.settings'

Luego esta buscando dicho módulo y no encuentra el archivo que debes crear.

Y como tendría que ir esa linea para que tome el settings.py???

disculpa por las molestias, saludos.
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 21, 2011, 19:04:12 pm
Esa línea no tiene que ir en el settings.py. Unicamente debes crear el archivo pueba.settings
Título: Re:Error 500 con django
Publicado por: MalaLeche en Noviembre 21, 2011, 19:12:00 pm
Esa línea no tiene que ir en el settings.py. Unicamente debes crear el archivo pueba.settings

Hola, creo que no me entiendes, yo no tengo esa linea en el settings.py
Código: [Seleccionar]
os.environ['DJANGO_SETTINGS_MODULE'] = 'pueba.settings'esa linea está en el django.swgi y lo que quiero es que el wsgi encuentre el archivo settings.py de mi proyecto, sin necesidad de crear el archivo pueba.settings, espero ahora si entiendas, saludos.
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 21, 2011, 19:17:01 pm
Si te entiendo, esa linea que esta en tu django.wsgi, define donde buscar el archivo de settings.

Si la quitas, buscara por defecto el settings.py, si la dejas, buscara el archivo que pones en este caso pueba.settings.

Luego si no quieres que sea el archivo pueba.settings y sea el settings.py, elimina dicha linea.

Más información en la documentación de Django:
https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings
Título: Re:Error 500 con django
Publicado por: MalaLeche en Noviembre 21, 2011, 19:35:08 pm
Si te entiendo, esa linea que esta en tu django.wsgi, define donde buscar el archivo de settings.

Si la quitas, buscara por defecto el settings.py, si la dejas, buscara el archivo que pones en este caso pueba.settings.

Luego si no quieres que sea el archivo pueba.settings y sea el settings.py, elimina dicha linea.

Más información en la documentación de Django:
https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings

Sigo con problema error 500 y ese es mi django.wsgi
Código: [Seleccionar]
#django.wsgi

import os, sys

sys.path.append('/home/malalech/public_html/puebas')
sys.path.append('/home/malalech/public_html')

os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac-eggs'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

incluso eliminando
Código: [Seleccionar]
os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac-eggs'

sigue sin cargar mi proyecto, me puedes mostrar mis log.
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 21, 2011, 19:43:43 pm
Esto muestran tus logs:

Código: [Seleccionar]
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX] mod_wsgi (pid=30516): Exception occurred processing WSGI script '/home/malalech/public_html/django.wsgi'., referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX] Traceback (most recent call last):, referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/core/handlers/wsgi.py", line 250, in __call__, referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX]     self.load_middleware(), referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/core/handlers/base.py", line 39, in load_middleware, referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX]     for middleware_path in settings.MIDDLEWARE_CLASSES:, referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/utils/functional.py", line 276, in __getattr__, referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX]     self._setup(), referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX]   File "/usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg/django/conf/__init__.py", line 40, in _setup, referer: http://malaleche.quijost.com/
[Mon Nov 21 19:36:27 2011] [error] [client XXX.XXX.XXX.XXX]     raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE), referer: http://malaleche.quijost.com/

Te aconsejo poner:

Código: [Seleccionar]
try:
    application = django.core.handlers.wsgi.WSGIHandler()
except Exception, e:
   print e

Así podrás capturar cualquier excepción que se lance en tu aplicación sin necesidad de consultar los logs.

Como ves, el propio wsgi, te obliga a definir la variable en algún sitio. Si no quieres ahi, puedes definirla en el  __init__.py de tu proyecto, pero debes definir la variable con el archivo antes de inicializar.
 
Título: Re:Error 500 con django
Publicado por: MalaLeche en Noviembre 21, 2011, 23:11:53 pm
Buscando informacion arregle mi django.wsgi como sigue:

Código: [Seleccionar]
#!/usr/bin/python

import os, sys

d =  os.path.dirname(__file__)
if (d not in sys.path):
sys.path.append(d)

os.environ['DJANGO_SETTINGS_MODULE'] = 'puebas.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac-eggs'

import django.core.handlers.wsgi

try:
application = django.core.handlers.wsgi.WSGIHandler()
except Exception, e:
print e

y si lo ejecuto por ssh me sale el siguiente error:

Código: [Seleccionar]
Traceback (most recent call last):
  File "./django.wsgi", line 12, in ?
    import django.core.handlers.wsgi
ImportError: No module named django.core.handlers.wsgi

espero me puedas ayudar
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 22, 2011, 10:22:37 am
Prueba con lo siguiente:

Código: [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os, sys

d =  os.path.dirname(__file__)
if (d not in sys.path):
sys.path.append(d)

sys.path.append('/usr/local/django')
sys.path.append('/usr/lib/python2.6/site-packages/')
sys.path.append('/usr/lib/python2.7/site-packages/')

sys.stdout = sys.stderr

os.environ['DJANGO_SETTINGS_MODULE'] = 'puebas.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac-eggs'

import django.core.handlers.wsgi

try:
_application = django.core.handlers.wsgi.WSGIHandler()
except Exception, e:
print e
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 22, 2011, 11:12:53 am
Creo que ya he encontrado tu problema.

Estas ejecutando python2.4, donde no tenemos instalado Django, debes invocar a python2.6 o python2.7.

Fijate que los paths estan relativos a 2.4 porque es el binario que estas invocando.

Puedes cambian la primera linea por /usr/bin/env python o bien
#/usr/bin/python2.7

Para asegurarte. Con eso no debería darte ya ningún problema más.
Título: Re:Error 500 con django
Publicado por: shakaran en Noviembre 22, 2011, 11:30:07 am
Hemos instalado también Django en python2.4 de forma adicional, asi que ahora ya no debes tener ningún problema, aunque recomendamos que al menos uses python2.7
Título: Re:Error 500 con django
Publicado por: MalaLeche en Noviembre 22, 2011, 14:07:20 pm
Hemos instalado también Django en python2.4 de forma adicional, asi que ahora ya no debes tener ningún problema, aunque recomendamos que al menos uses python2.7

Hola, ya funciona agregando #!/usr/bin/env python y cambiandos los permisos de /trac-eggs a 777 ya que si los dejo con otros permisos mde da:

Código: [Seleccionar]
[Tue Nov 22 09:59:46 2011] [error] [client 190.44.192.12]   /home/malalech/public_html/trac-eggs
[Tue Nov 22 09:59:46 2011] [error] [client 190.44.192.12]   [Errno 13] Permiso denegado: '/home/malalech/public_html/trac-eggs/MySQL_python-1.2.3-py2.7-linux-x86_64.egg-tmp'
[Tue Nov 22 09:59:46 2011] [error] [client 190.44.192.12] mod_wsgi (pid=20593): Exception occurred processing WSGI script '/home/malalech/public_html/django.wsgi'.
[Tue Nov 22 09:59:46 2011] [error] [client 190.44.192.12]   /home/malalech/public_html/trac-eggs

Bueno pero ya funciona, gracias por la ayuda :P