Quijost
Webmaster => Programacion Web => Python => Mensaje iniciado 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
# htaccess for wsgi
SetHandler wsgi-script
RewriteEngine on
RewriteCond %{REQUEST_URI} !(django.wsgi)
RewriteRule ^(.*)$ django.wsgi/$1 [L]
django.wsgi
#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
-
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:
[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.
-
Gracias por tu respuesta shakan, pero sigo con el problema modifique mi django.wsgi de la siguiente manera:
#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.
-
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.
-
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.
-
Django obtiene el setttings.py por defecto si no defines otra configuración.
En el código tienes:
os.environ['DJANGO_SETTINGS_MODULE'] = 'pueba.settings'
Luego esta buscando dicho módulo y no encuentra el archivo que debes crear.
-
Django obtiene el setttings.py por defecto si no defines otra configuración.
En el código tienes:
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.
-
Esa línea no tiene que ir en el settings.py. Unicamente debes crear el archivo pueba.settings
-
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
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.
-
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
-
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
#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
os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac-eggs'
sigue sin cargar mi proyecto, me puedes mostrar mis log.
-
Esto muestran tus logs:
[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:
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.
-
Buscando informacion arregle mi django.wsgi como sigue:
#!/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:
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
-
Prueba con lo siguiente:
#!/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
-
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.
-
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
-
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:
[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