Quijost

Servicios => Asistencia al cliente => Mensaje iniciado por: gdc0 en Enero 24, 2013, 01:57:17 am

Título: Error al desplegar sitio
Publicado por: gdc0 en Enero 24, 2013, 01:57:17 am
Buenas noches!
No soy capaz de echar a andar mi proyecto.
Creo que he mirado el foto entero varias veces y sigo igual...

El esquema de mi proyecto es:
public_html
   .htaccess
   DIVIDEL
       app_DIVIDEL (aplicación)
       DIVIDEL (proyecto)
          wsgi.py

Contenidos:
.htaccess
SetHandler wsgi-script

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(django.wsgiwsgi.py)
RewriteRule ^(.*)$ django.wsgiwsgi.py/$1 [L]


wsgi.py

import os, sys

 sys.path.append("/home/dividel/public_html/")

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DIVIDEL.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

¿Podéis echarme una mano?

Gracias.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 24, 2013, 13:54:29 pm
Buenas noches!
No soy capaz de echar a andar mi proyecto.
Creo que he mirado el foto entero varias veces y sigo igual...

El esquema de mi proyecto es:
public_html
   .htaccess
   DIVIDEL
       app_DIVIDEL (aplicación)
       DIVIDEL (proyecto)
          wsgi.py

Contenidos:
.htaccess
SetHandler wsgi-script

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(django.wsgiwsgi.py)
RewriteRule ^(.*)$ django.wsgiwsgi.py/$1 [L]


wsgi.py

import os, sys

 sys.path.append("/home/dividel/public_html/")

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DIVIDEL.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

¿Podéis echarme una mano?

Gracias.

Un saludo.

¿Alguien puede ayudarme?

Gracias.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Enero 24, 2013, 17:55:58 pm
Hola gdc0,

Te faltan por definir algunas directivas.

Debes añadir al sys.path las carpetas que cuelgan como proyectos, en tu caso:

Código: [Seleccionar]
sys.path.append('/home/dividel/public_html/DIVIDEL/')
sys.path.append('/home/dividel/public_html/DIVIDEL/DIVIDEL')

También seria necesario que definas el PYTHON_EGG_CACHE

Código: [Seleccionar]
os.environ['PYTHON_EGG_CACHE'] = '/home/dividel/tmp/trac-eggs'
También ayudaría a conocer si detallas que error tienes al desplegar al sitio, con referenciar sólo que tienes un error nos falta contexto para ayudarte.
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 24, 2013, 21:23:05 pm
Buenas noches

He realizado los cambios indicados y sigo obteniendo el mismo error: documento no encontrado.

No sé si debería añadir más información.

Gracias.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Enero 25, 2013, 02:04:47 am
En el .htaccess tienes definido un archivo wsgi.py con una regla que dice que toda petición que se haga (excepto para el archivo wsgi.py) pase como parámetro a ese archivo.

Pero creo que el problema es que no tienes ningún archivo wsgi.py en public_html, sino en directorios más anidados, de ahí que te lance un 404 a cualquier URL que cargas ya que se esta aplicando la regla de mod_rewrite del .htaccess para un archivo inexistente.
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 25, 2013, 10:46:11 am
Buenos días

He colocado el fichero wsgi.py debajo de public_html y ahora obtengo un error 500.

Muchas gracias por toda la ayuda que me estáis proporcionando.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Enero 25, 2013, 10:53:41 am
El error 500 que te da tiene como traza (si capturas los errores):

Código: [Seleccionar]
ImportError: Could not import settings 'DIVIDEL.settings' (Is it on sys.path?): No module named settings
Esto se debe a que tu settings.py esta en un directorio inferior, quizás te funcione cambiar en el wsgi.py:

Código: [Seleccionar]
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DIVIDEL.settings")
Por el siguiente:

Código: [Seleccionar]
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DIVIDEL.DIVIDEL.settings")
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 25, 2013, 12:42:06 pm
Nada, obtengo el mismo error 500.

Además, he estado revisando el fichero settings.py que se encuentra en public_html/DIVIDEL/DIVIDEL donde he colocado lo siguiente para que pueda grabar los errores, pero no me graba nada.

LOGGING =
{
    'version': 1,
    'disable_existing_loggers': True,
    'filters':{'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}},
    'handlers':
    {
        'mail_admins':{'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'},
        'file':{'level':'ERROR', 'class':'logging.FileHandler', 'filename':'/home/dividel/public_html/DIVIDEL/error.log'}
    },
    'loggers':{'django.request':{'handlers': ['mail_admins','file'], 'level': 'ERROR', 'propagate': True,},}
}

El fichero error.log tiene los permisos 664 y DEBUG = True.

Gracias.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Enero 25, 2013, 13:11:46 pm
Editando tu fichero wsgi.py te he cambiado lo siguiente:

Código: [Seleccionar]
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DIVIDEL.settings")
Por:

Código: [Seleccionar]
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
Puesto que las rutas correctas ya estan en el path:

Código: [Seleccionar]
sys.path.append('/home/dividel/public_html/DIVIDEL/')
sys.path.append('/home/dividel/public_html/DIVIDEL/DIVIDEL')

Se debe poner solo settings.

Por otro lado, en el settings.py tienes un Syntax error, porque no se puede separar un diccionario cuando se asigna, es decir cambiar el:
Código: [Seleccionar]
LOGGING =
{

Por:

Código: [Seleccionar]
LOGGING = {
Despues, el archivo de error.log no deberia estar en un directorio de public_html, ya que necesita permisos 666 (ya que wsgi escribe y lee como "world" el archivo)

Luego es necesario:

Código: [Seleccionar]
chmod 666 /home/dividel/public_html/DIVIDEL/error.log
Tras arreglar eso, el error 500 que se produce ahora es porque no te encuentra el urls.py, luego tendras que cambiar lo necesario:

Código: [Seleccionar]
[Fri Jan 25 13:06:19 2013]  mod_wsgi (pid=15403): Exception occurred processing WSGI script '/home/dividel/public_html/wsgi.py'.
[Fri Jan 25 13:06:19 2013]  Traceback (most recent call last):
[Fri Jan 25 13:06:19 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/core/handlers/wsgi.py", line 241, in __call__
[Fri Jan 25 13:06:19 2013]      response = self.get_response(request)
[Fri Jan 25 13:06:19 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/core/handlers/base.py", line 179, in get_response
[Fri Jan 25 13:06:19 2013]      response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
[Fri Jan 25 13:06:19 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/core/handlers/base.py", line 224, in handle_uncaught_exception
[Fri Jan 25 13:06:19 2013]      if resolver.urlconf_module is None:
[Fri Jan 25 13:06:19 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/core/urlresolvers.py", line 323, in urlconf_module
[Fri Jan 25 13:06:19 2013]      self._urlconf_module = import_module(self.urlconf_name)
[Fri Jan 25 13:06:19 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/utils/importlib.py", line 35, in import_module
[Fri Jan 25 13:06:19 2013]      __import__(name)
[Fri Jan 25 13:06:19 2013]  ImportError: No module named urls
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 25, 2013, 14:32:37 pm
Viendo los módulos que tenéis instalados aparece Sqlite versión 2.6.3, pero en los errores que obtengo aparece sqlite3 y en el settings tengo

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'dividel.db',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

¿Podría haber un problema con las versiones?

Gracias.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Enero 26, 2013, 03:30:41 am
Ya esta instalada una versión mas reciente de sqlite3 (3.7.15) y el módulo python sqlite3(2.6.0) en lugar de pysqlite2 (2.6.3).

Ahora debería funcionarte sin problemas de sqlite, puedes comprobarlo por ssh con:
 
Código: [Seleccionar]
$ sqlite3 --version; python -c "import sqlite3; print sqlite3.version"
3.7.15.2 2013-01-09 11:53:05 c0e09560d26f0a6456be9dd3447f5311eb4f238f
2.6.0

Puedes verlo funcionando en http://quijost.com/sandbox/index.py
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 26, 2013, 12:51:30 pm
Buenos días Shakaran

Siento que estoy acabando con tu paciencia...

Viendo el fichero de errores observo lo siguiente:
ExtractionError: Can't extract file(s) to egg cache

The following error occurred while trying to extract file(s) to the Python egg
cache:

  [Errno 17] El fichero ya existe: '/home/dividel/tmp/trac-eggs'

The Python egg cache directory is currently set to:

  /home/dividel/tmp/trac-eggs/

Perhaps your account does not have write access to this directory?  You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.

Además, el fichero tiene permisos 666.

No entiendo estos mensajes de error, parecen contradictorios.

¿Podrías echarme una mano?

Muchas gracias.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Enero 27, 2013, 01:51:10 am
Parece que no es ese el error que tienes ahora (has cambiado código), el que aparece es el siguiente:

Código: [Seleccionar]
[Sat Jan 26 18:47:36 2013] [info]  mod_wsgi (pid=6053, process='', application='dividel.quijost.com|/wsgi.py'): Loading WSGI script '/home/dividel/public_html/wsgi.py'.
[Sat Jan 26 18:47:36 2013] [error]  mod_wsgi (pid=6053): Target WSGI script '/home/dividel/public_html/wsgi.py' cannot be loaded as Python module.
[Sat Jan 26 18:47:36 2013] [error]  mod_wsgi (pid=6053): Exception occurred processing WSGI script '/home/dividel/public_html/wsgi.py'.
[Sat Jan 26 18:47:36 2013] [error]  Traceback (most recent call last):
[Sat Jan 26 18:47:36 2013] [error]    File "/home/dividel/public_html/wsgi.py", line 23, in <module>
[Sat Jan 26 18:47:36 2013] [error]      os.environ.setdefault['PYTHON_EGG_CACHE'] = '/home/dividel/www/.python-eggs'
[Sat Jan 26 18:47:36 2013] [error]  TypeError: 'instancemethod' object does not support item assignment

Probablemente porque no puedes hacer de esa forma la asignación al environ en python y de ahi el TypeError.
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 28, 2013, 12:28:29 pm
Buenos días Shakaran

¿Podrías mandarme el log de hace unos minutos?

No sé porque pero, de repente, el envío de errores al correo y su grabación en un fichero de errores ha dejado de funcionar.

Muchas gracias.

Un saludo.

P.D.: Estoy mirando posibles errores en el paquete distribute-0.6.34 y dentro de éste, en la función get_cache_path. Cuando tenga más información podré decirte algo.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Enero 28, 2013, 12:56:56 pm
La traza que aparece es la siguiente (te falta definir el template para el error 500 en Django):

Código: [Seleccionar]
[Mon Jan 28 12:53:10 2013]  Traceback (most recent call last):, referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/core/handlers/wsgi.py", line 241, in __call__, referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]      response = self.get_response(request), referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/core/handlers/base.py", line 153, in get_response, referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]      response = self.handle_uncaught_exception(request, resolver, sys.exc_info()), referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/core/handlers/base.py", line 228, in handle_uncaught_exception, referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]      return callback(request, **param_dict), referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/utils/decorators.py", line 91, in _wrapped_view, referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]      response = view_func(request, *args, **kwargs), referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/views/defaults.py", line 32, in server_error, referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]      t = loader.get_template(template_name) # You need to create a 500.html template., referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/template/loader.py", line 145, in get_template, referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]      template, origin = find_template(template_name), referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]    File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/template/loader.py", line 138, in find_template, referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]      raise TemplateDoesNotExist(name), referer: http://dividel.quijost.com/
[Mon Jan 28 12:53:10 2013]  TemplateDoesNotExist: 500.html, referer: http://dividel.quijost.com/

Lo que me parece extraño es lo que comentas de distribute, no se que tiene que ver ya que no tendrías permisos root para instalaciones de paquetes (a menos que uses virtualenv).

Sobre que no te lleguen el envio de correos, puede ser porque cPanel tiene impuesto un límite de 150 email por usuario a la hora, si lo has sobrepasado en una hora podrás enviar de nuevo.
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 28, 2013, 13:29:29 pm
¡No entiendo nada!

Sin tocar nada, de repente, empiezan a llegar mensajes de error (7 en total) los cuales me dicen que falta la plantilla 404
Código: [Seleccionar]
Traceback (most recent call last):

  File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/core/handlers/base.py", line 150, in get_response
    response = callback(request, **param_dict)

  File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/utils/decorators.py", line 91, in _wrapped_view
    response = view_func(request, *args, **kwargs)

  File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/views/defaults.py", line 20, in page_not_found
    t = loader.get_template(template_name) # You need to create a 404.html template.

  File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/template/loader.py", line 145, in get_template
    template, origin = find_template(template_name)

  File "/usr/local/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/django/template/loader.py", line 138, in find_template
    raise TemplateDoesNotExist(name)

TemplateDoesNotExist: 404.html

Y a vosotros os sale el error 500.

No sabía el límite de cPanel, de todos modos, habré recibido como máximo 20 mensajes pero en varios días.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Enero 28, 2013, 13:45:14 pm
A ver si te puedo ayudar, pero quizás Django y Python te resulte más complicado y te merezca más la pena usar PHP con algún framework o CMS. Aunque nosotros recomendamos Django, pero requiere de cierta curva de nivel de aprendizaje.

En Django existe una variable en el settings.py llamada TEMPLATE_DIRS (https://docs.djangoproject.com/en/dev/ref/settings/#template-dirs) que establece la ruta por defecto de los templates (plantillas). Algo como:

Código: [Seleccionar]
TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, 'templates'),
)

Django esta capturando un error 500, que hace buscar la plantilla 500.html, en el directorio de plantillas. Al no encontrar la plantilla y archivo, devuelve otro error 404, que busca la plantilla 404.html, y al no encontrar esta devuelve la excepción TemplateDoesNotExist.

Sobre los correos, aunque no hayas sobrepasado el límite (es variable, en otros hostings son 10 por hora, 50 por hora, nosotros creemos que 150 es suficiente en un servidor compartido y por usuario) puede que no te lleguen los correos al momento. Los correos cuando se envían se encolan y según la prioridad definida por el servidor de envío de correos y otros factores como la hora del día, tráfico actual, etc, estos pueden llegar al instante, tardar algunos segundos, minutos o horas. Cada día se envían y reciben varias docenas de miles de correos sólo en un servidor compartido, por lo que es normal que a veces lleguen al instante o tarden un poco más.
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Enero 28, 2013, 23:39:09 pm
Buenas noches Shakaran

Ya he conseguido que funcione casi todo (estoy con el módulo admin).

Muchas gracias por tu inestimable ayuda, sin ella aún me estaría dando de cabezazos contra la pared. :)

P.D.: Una vez que te adentras en el mundo Python-Django ¡no quiero saber nada de PHP!
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Febrero 07, 2013, 01:19:56 am
Buenas noches

Sucede que, a veces, cuando pinchas en algún enlace de la página salta un error 500, el cual no queda reflejado en el fichero de errores que tengo y, además, no me muestra la página 500.html que tengo habilitada para ello. Si refrescas la pantalla una o varias veces (depende de la ocasión) carga la página perfectamente. Es más, no sucede siempre en la misma página.

He revisado la web de arriba abajo y no he encontrado nada raro.

Este comportamiento me viene sucediendo desde que desplegué la página.

Dominio: dividel

¿Podríais echarme una mano?

Muchas gracias.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Febrero 07, 2013, 09:07:41 am
Hola gdc0,

Por el comportamiento que detallas parece mas bien alguna página servida desde cache (ya sea cacheada en cliente) o bien cacheada desde nginx en el servidor. Si hemos detectado en otros usuarios que a veces wsgi sirve el bytecode de anteriores peticiones y hasta que apache no finaliza el thread (hilo) que sirvió ese bytecode no se comporta correctamente. De ahí, que a veces sirva bien o no si lo sirve un thread u otro de Apache que tenga el bytecode.

Una de las posibles soluciones es borrar el bytecode que se haya generado (archivos .pyc o .pyo) en el directorio web del usuario y esperar a que dichos thread finalicen (sirven por defecto 10000 peticiones y después finalizan). Otra opción más drástica, es hacer un reinicio graceful de apache, lo que mata todos los hilos y como consecuencia las nuevas invocaciones no tienen ningún bytecode antiguo. Pero esta medida afecta al resto de usuarios durante unos segundos ya que no se sirven peticiones web.
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Febrero 07, 2013, 23:45:58 pm
Hola shakaran

El caso es que a veces se me ha ocurrido que podía ser por los ficheros ya compilados y he borrado alguno puntual, pero no se me ha ocurrido probar a borrar todos los ficheros compilados (tanto .pyc como .pyo).

Intentaré probar con este método a ver qué sucede.

Muchas gracias por las aclaraciones, siempre se aprende algo nuevo.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Marzo 22, 2013, 12:47:47 pm
Buenos días Shakaran

Sigo con el mismo problema, he borrado varias veces todos los archivos .pyc y/o .pyo y nada, en ciertas páginas sigue dando el error "Internal Server Error" y otras veces me muestra la página de error 400.html. Es más, ahora necesito pulsar varias veces F5 para que finalmente cargue la página (más de 10-15 veces).

No puedo seguir así, mi cliente está muy descontento conmigo y no le estoy dando mucha confianza.

Si pudieras ayudarme o darme unas indicaciones para poder solucionar este problema.

Muchas gracias.

Un saludo.
Título: Re:Error al desplegar sitio
Publicado por: shakaran en Marzo 22, 2013, 12:53:57 pm
Hola gdc0,

Probablemente tengas algunos problemas con la actualización a Django 1.5 y de ahí que sólo algunas partes de la web te den error 500.

Te aconsejo poner un file handler de errores en Django (settings.py) para poder depurar los errores. Si quieres podemos tratar vía soporte skype (usuario quijost) de forma más rápida los problemas que tengas (probablemente tengas que cambiar 3 o 4 lineas debido a DeprecationsWarnings).
Título: Re:Error al desplegar sitio
Publicado por: gdc0 en Marzo 22, 2013, 19:59:00 pm
Hola de nuevo Shakaran
Creo que te he enviado una solicitud de contacto de skype (gdc01976).

No sé si el problema ha empeorado con Django 1.5 pero con 1.4 también me pasaba y no sucede siempre en las mismas páginas. De todos modos, aquí pongo el manejador de errores que tengo en settings.py:
LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'filters': {
         'require_debug_false': {
             '()': 'django.utils.log.RequireDebugFalse'
         }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        },
        'file': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'filename': '/home/gus/public_html/DIVIDEL/error.log'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins','file'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

¡Muchas gracias y buen fin de semana!