lunes, 14 de diciembre de 2009

Django Hosting en Venezuela!

Últimamente me he dedicado a realizar aplicaciones utilizando el Framework para Python Django, sencillamente extraordinario, para el desarrollo cuenta con un servidor de peticiones Web/Http el cual permite ir ejecutando la aplicación sin tener que montar un servidor web para hacerlo.

El problema esta cuando ya esta diseñada aplicación que sera instalada en un entorno de producción “llevar la aplicación a la vida real”, es posible que si uno trabaja para una institución pública o privada “grande” cuente con salas de servidores “centro de datos”, esto no es mucho problema habilitar un Virtualhost o servidor para montar la aplicación, ya que se cuenta con conexiones dedicadas a internet que cuentan con IP's públicas, pero, qué pasa cuando cuando uno o el cliente para el cual uno esta “matando el tigre” no cuenta con estas bondades?.

En primera instancia uno pude ir a la Wiki del proyecto de Django, específicamente http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts allí encontraremos una lista de proveedores de servicios que oficialmente dan soporte sobre Python/Django, esto quiere decir, que si queremos un servicio de Hosting para una aplicación Django deberíamos contratar con alguno de estos proveedores, pero que pasa si queremos un servicio de Hosting que tenga soporte en español y que se pueda pagar en moneda Venezolana?. Bien la respuesta es que a esta fecha no existe un servicio de Hosting que soporte Django en Venezuela, por lo menos no oficialmente y que yo conozca.

Gran cantidad de Hosting dicen que soportan Python, pero si preguntan , pero, y soportan mod_python o fastcgi?, la respuesta es no sabemos o que uno debe contratar un servicio Premiun para contar con estas cosas. Para terminar les quiero contar como he montado una aplicación de Django en un Hosting en Venezuela.

El proveedor es http://www.venehosting.com , oficialmente ellos no dan soporte para aplicaciones en Django, pero tienen habilitado el modulo de Python para Apache “mod_python”, con eso es suficiente para ejecutar aplicaciones de Django, su servidor(es) corren en Os/Linux i386 y tienen python2.5., el panel es Plesk y la transferencia de ficheros es en FTP, no tiene soporte para SSH. Los pasos son los siguientes:

  • Comprar uno de los planes que ofrecen (yo solo compré el básico por 1 mes, osea que la prueba me salio en 12 Bsf)

  • Luego de pagar y tener los datos para poder entrar al Panel Plesk, asignar el password para entrar vía FTP.

  • Subir al directorio “httpdocs” que por defecto es el directorio al que apunta el dominio principal un fichero que debe llamarse “.htaccess” con el siguiente contenido que habilitara los módulos de Python.


SetHandler python-program

PythonHandler django.core.handlers.modpython

PythonPath "['/var/www/vhosts/NOMBRE-DEL-DOMINIO/httpdocs', '/var/www/vhosts/NOMBRE-DEL-DOMINIO/httpdocs/modules'] + sys.path"

SetEnv DJANGO_SETTINGS_MODULE PROYECTO.settings

PythonDebug On



Tener en cuenta que donde dice “NOMBRE-DEL-DOMINIO” debe estar el nombre de su dominio , por ejemplo “midominio.com” y cambiar “PROYECTO.settings ” por el nombre de su proyecto, por ejemplo: “miaplicacion.settinsg” en donde “miaplicacion” es el nombre del directorio de su aplicación y “settings” el fichero que contiene la configuración del proyecto Django settings.py.




  • Crear un directorio en su maquina llamado “modules”, descargar Django en tu maquina de la siguiente dirección http://www.djangoproject.com/download/1.1.1/tarball/ el cual es un comprimido que usted debe descomprimir, copiar desde el directorio “Django-1.1.1” el directorio llamado “django” al directorio recién creado llamado “modules”, si todo esta bien el directorio “modules” debería ser así “/modules/django”

  • Subir al directorio “httpdocs” el directorio “modules” que contiene el framework Django, el Python que esta en el Hosting lo integrara a su path.

  • Subir su aplicación al directorio “httpdocs”.

Este es un mini howto de como hacerlo, ahora, pudiéramos colocar un ejemplo: supongamos que mi aplicación y/o proyecto se llama “tatakua”, es de suponer que tengo un directorio llamado “tatakua” donde esta toda la estructura de proyecto de Django y que mi dominio se llame “tatakua.net”, entonces:



  • Mi fichero “.htaccess” contendría esto;


SetHandler python-program

PythonHandler django.core.handlers.modpython

PythonPath "['/var/www/vhosts/tatakua.net/httpdocs', '/var/www/vhosts/tatakua.net/httpdocs/modules'] + sys.path"

SetEnv DJANGO_SETTINGS_MODULE tatakua.settings

PythonDebug On





  • Mi directorio “modules” contendría un subdirectorio llamado django y se vería así “/modules/django”

  • Mi directorio de aplicación o proyecto se llamaría “tatakua” que dentro tiene settings.py y todo lo demás de un proyecto Django.

  • Así quedaría la estructura de directorios:


|-- var

| |-- www

| | |-- vhosts

| | | |-- tatakua.net

| | | | |-- httpdocs

| | | | | |-- .htaccess

| | | | | |-- tatakua

| | | | | | |-- settings.py

| | | | | | |-- resto de ficheros y directorios del proyecto

| | | | | |-- modules

| | | | | | |-- django

| | | | | | |-- resto de ficheros y directorios de django del FrameWork Dajango


Extra, les comento que el directorio “modules” se puede utilizar para copiar otros módulos al cual no tenga soporte el Python del Hosting, en mi caso en ese directorio también tengo a PIL y MySQLdb.

4 comentarios:

  1. conoci un servidor gratis par django
    www.alwaysdata.com

    pero no se le entendi cmo subir mi aplicacion
    oajalo puedas hacer tu y me indiques como hacerlo por favorrrrrrrrrrrrr

    ResponderEliminar
  2. Alwaysdata al igual que la mayoría de los prestadores de servicios webhosting tienen habilitado por defecto la transferencia de ficheros mediante el protocolo FTP, en el caso de Alwaysdata también lo puedes realizar con el protocolo SSH.

    ResponderEliminar
  3. Hola, en la actualidad este site esta alojado en http://quijost.com/ , saludos...

    ResponderEliminar
  4. Hola! muy bueno tu artículo! alguna actualización? sabes si a estas alturas hay alguno que de soporte completo a python o django? me gustaría usar mod_wsgi y pip para instalar los módulos. Otra cosa: de dónde te bajas los tarballs para los otros módulos(en tu caso PIL y MySQLdb)? me gustaría contar con psycopg2 y django-allauth. Si se puede instalar con pip, mejor! disculpa por el montón de preguntas, y bueno, muchas gracias por la info!

    ResponderEliminar