Webmaster > Desarrollo Web

[Solucionado] Problema despliegue app django

(1/1)

impulse:
Hola,

hoy desplegando una aplicación django me he encontrado con un problema (ya solucionado con la ayuda del soporte de quijost), pero lo posteo aquí por si puede ayudar a alguien.

Había configurado la aplicación como indican en algún otro post, es decir:

Fichero .htaccess

--- Código: ---# htaccess for wsgi
SetHandler wsgi-script

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(django.wsgi)
RewriteRule ^(.*)$ django.wsgi/$1 [L]
--- Fin del código ---

Fichero django.wsgi

--- Código: ---#django.wsgi
import os, sys
sys.path.append('/home/USUARIO/public_html/modules')
sys.path.append('/home/USUARIO/public_html/modules/django')
sys.path.append('/home/USUARIO/public_html')
os.environ['DJANGO_SETTINGS_MODULE'] = 'proyecto.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac-eggs'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
--- Fin del código ---

Al intentar acceder a mi aplicación recibía un error 500, el problema estaba en la ruta de la propiedad PYTHON_EGG_CACHE.

El problema se encontraba en que la ruta configurada en esta variable de entorno ('/tmp/trac-eggs') no es accesible con permiso de escritura por mi usuario. La solución ha sido crear un directorio en mi home (/home/USUARIO/tmp/trac-eggs) y hacer que esa variable de entorno apunte a él, es decir, cambiar la linea por:


--- Código: ---os.environ['PYTHON_EGG_CACHE'] = '/home/USUARIO/tmp/trac-eggs'
--- Fin del código ---

Con esto se ha solucionado.
Espero que a alguien le sirva de ayuda.

Saludos!

shakaran:
Gracias por compartir el problema y solución para fomentar el crecimiento de la comunidad Django en Quijost.

Nos gustaría comentar que Django y otros módulos python están instalados por defecto en todos los servidores compartidos de Quijost, por lo que no es necesario instalarlo bajo la cuenta propia del usuario (a menos que ser requiera de alguna configuración especial, que en cuyo caso podemos ayudar a facilitarla también).

De esta forma no sería necesario tampoco añadir al path del sistema estas rutas:


--- Código: ---sys.path.append('/home/USUARIO/public_html/modules')
sys.path.append('/home/USUARIO/public_html/modules/django')
sys.path.append('/home/USUARIO/public_html')

--- Fin del código ---

La ruta de Django para Python 2.7 se encuentra en /usr/local/lib/python2.7/site-packages/Django-1.3.1-py2.7.egg. Luego usando el binario python2.7 del sistema se busca por defecto.

Se recomienda tambien usar un shebang correcto llamando al binario python a través del binario "env", ya que hay configurados python2.4, python2.6 y python2.7. La manera más correcta de llamar al binario más actualizado es con:


--- Código: ---#!/usr/bin/env python
--- Fin del código ---

O por ejemplo, para asegurar la ejecución con alguna versión específica, por ejemplo python2.7:


--- Código: ---#!/usr/bin/env python2.7
--- Fin del código ---

Por último comentar, que establecer un directorio incorrecto para trac-eggs puede generar problemas a la hora de usar por ejemplo el módulo MySQLdb (al ser cargado por la variable db['ENGINE'] del settings.py), ya que no podrá descomprimir correctamente el egg y generará errores del tipo:


--- Código: ---Error loading MySQLdb module: /tmp/trac-eggs/MySQL_python-1.2.3-py2.7-linux-x86_64.egg-tmp/_mysql.so: failed to map segment from shared object: Operation not permitted
--- Fin del código ---

Que pueden producir el error 500 antes mencionado, lanzando una excepción ImproperlyConfigured en el error_log general de apache.

prince:
hoy desplegando una aplicación django me he encontrado con un problema (ya solucionado con la ayuda del soporte de quijost), pero lo posteo aquí por si puede ayudar a alguien


_________
prince

Navegación

[0] Índice de Mensajes

Ir a la versión completa