Django Apache con Webmin + Ubuntu

. viernes, 3 de febrero de 2012
0 comentarios

He estado horas para no decir toda una noche tratando configurar una pequeña aplicación de inventario hecho en django, junto con mi apache en  un hosting con Ubuntu. No es que no haya hecho esto, resulta que no me he tomado la tarea de documentar lo que hago, y pues no quiero sufrir alguna vez esta tediosa tarea de configuración.
Intentaré decir lo mínimo que he hecho no solamente para ustedes, si no para mi mismo, cuando tenga que volverlo hacer.

Existen muchas maneras de configurar tu django, a manera de terminal o utilizando valiosas herramientas de administración como lo es webmin, herramienta gratuita que puedes descargar desde http://webmin.com/ dónde también podrás encontrar la documentación necesaria. Parto del hecho que tienes en tu hosting tu apache ya configurado.
 Qué es lo primero?, bueno más que todo empezar  una taza de café y mucha paciencia. Entrado desde nuestro terminal o cualquier herramienta de ssh nos conectamos a nuestro hosting e instalamos nuestro wsgi que es el que nos permitirá servir los archivos de python en este caso los de django, no es que sea el único pero supongo que hasta ahora el más sencillo que he usado. Una vez logueados con nuestra herramienta de ssh una de más comunes es putty, o sí eres un usuario linux como yo, simplemente desde terminal ssh -l root nombredeldominio.com y te pedirá la contraseña, ya esto hecho teclearemos en terminal.

 sudo apt-get install libapache2-mod-wsgi








Como mi versión de ubuntu en mi servidor, tenia una versión de django en sus paquetes algo vieja, he decidido instalar la versión estable de la pagina descargar el comprimido subirlo al servidor luego instalarlo.
Aquí puedes ver como hacerlo https://www.djangoproject.com/download/

Una vez instalado nos dirigimos a nuestra configuración de apache usando webmin. entrando a nuestro buscador preferido usando el nombre del dominio mas el puerto 10000 conexión segura, accedemos una vez dentro buscamos en la parte izquierda en el menú Servers la opción  "Apache Webserver" . Una vez nos desplegará la lista de virtual host que tenemos configurado elegimos el que hemos creado para nuestra aplicación de django.












Nos dirigimos a la opción de Edit Directives y añadiremos las siguientes lineas , ya teniendo nuestra configuración básica nuestro directorio raíz configurado es cuestión de añadir al localización de nuestro proyecto, el cual deberíamos haber copiado a nuestra carpeta raíz configurada para nuestro virtual server.




<VirtualHost IP:80>

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
AddHandler wsgi-script .wsgi
WSGIScriptAlias / /home/directoalapp/apache/app.wsgi  #hacemos que nuestro apache busque nuestra configuración de nuestro proyecto
<Location /admin>   #lo que preside a la diagonal es nombre que podremos usar para cuando entramos a nuestro dominio, dominio.com/admin
           ..................
</Location>

</VirtualHost >









Le damos guardar y aplicamos los cambios antes de entrar al link debemos crear el archivo especificado *.wsgi en la dirección donde le especificamos de este modo.









Le damos guardar, y ya deberíamos tener nuestra aplicación o al menos nuestro django funcionando. 

Hasta este momento está funcionando y sirviendo nuestra aplicación pero que sucede nuestra aplicación tiene mala apariencia y no el estilo bonito de django, sucede que apache no sabe donde está los archivos dee javascript etc.

Bueno anteriormente donde rabiamos añadido las lineas  en  la configuración de apache añadimos también esto:
Alias /static/  /homexx/public_html/LAB_IGSA/static/
<Directory /home/xx/public_html/LAB_IGSA/static/>
Order deny,allow
Allow from all
</Directory>

Donde Static no son donde tenemos nuestras imágenes del proyecto y todo lo relacionado con multimedia, aun esto no termina entramos en la carpeta mencionada y creamos un enlace simbólico a los archivos de django necesarios:


ln -s /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media  admin_media


He mercado con oscuro porque luego  nos dirigimos a nuestro proyecto  y nos vamos al archivo settings.py y editamos las siguientes lineas de ser necesario.

import os.path
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))


MEDIA_ROOT = os.path.normpath(os.path.join(PROJECT_PATH, 'static')) "con este le decimos que los archivos están en la carpeta del proyecto llamado static"

STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX =  STATIC_URL + '/admin_media/'

guardamos y reiniciamos nuestro apache y debemos tener nuestro  proyecto andando.