lunes, 1 de febrero de 2010

Instalando Django a la par de un sitio PHP en Apache2 Ubuntu

Estoy comenzando a portear el sitio www.cruzandoelsuquia.com.ar, hecho en Joomla, a Django. Para eso necesito instalar Django en mi server de desarrollo (Una instalación básica de Ubuntu 9.10).

El objetivo es mantener la instalación actual del sitio Joomla, http:// localhost:80/ , y agregar una instalación de Django en el puerto 8000.

Los siguientes pasos son triviales, pero los dejo asentados para cualquiera que le pueda interesar.

Paso 1 - Instalar los paquetes
Instalar los paquetes de django, python para apache2 y los paquetes para acceder a mysql:

sudo apt get install libapache2-mod-python python-django python-mysqldb

Paso 2 - La configuración de Apache2
Suponiendo que el sitio de django se encuentra en la carpeta /home/usuario/django/sitio, debemos agregar el siguiente archivo:


# /etc/apache2/sites-available/django
 MaxRequestsPerChild 1
<VirtualHost *:8000>
    DocumentRoot /home/guillermo/django/cruzandoelsuquiaDJ/
  
    <Location "/">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE cruzandoelsuquiaDJ.settings
        PythonDebug On
    PythonPath "['/home/guillermo/django'] + sys.path"
    </Location>
    <Location "/media">
        SetHandler None
    </Location>
    <Location "/feincms_media">
        SetHandler None
    </Location>
    <LocationMatch "\.(jpg|gif|png)$">
        SetHandler None
    </LocationMatch>

</VirtualHost>

Luego, para activar este host virtual, es necesario agregar el sitio a la lista de sitios activados:

cd /etc/apache2/sites-enabled/
ln -s ../sites-available/django 001-django

En mi caso particular, tengo el sitio predeterminado 000-default, que es mi instalación de Joomla en el pueto standard 80.

Paso 3 - Activar los puertos

Agregar lo marcado en rojo en el archivo /etc/apache2/ports.conf

# /etc/apache2/ports.conf

...

  NameVirtualHost *:80
  Listen 80

  NameVirtualHost *:8000
  Listen 8000
...


Paso 4 - Reiniciar Apache

cd /etc/init.d
sudo ./apache2 restart

Paso 5 - Servir los media del admin de django a travez de Apache

Hay varias opciones, una es linkear la carpeta "media" de la instalacion de django, para tener los css e imagenes del backend:

cd /home/usuario/sitio
ln -s /var/lib/python-support/python2.6/django/contrib/admin/media media

Esto es una solución provisoria, la solución final es usar la carpeta admin_media, previamente configurada en settings.py.

Espero que esto le sirva a alguien. A mi me hubiera servido.

3 comentarios:

  1. interesante, y que hay haciendolo con el mod_wsgi ?, tengo entendido que el rendimiento con WSGI es mayor.

    ResponderEliminar
  2. Si, lei por ahi que es mas eficiente.

    Pero esta instalación es en un server de desarrollo. Cuando haga la instalación final tendré en cuenta la eficiencia.

    Cuando haga la instalación en el server, voy a escribir otro artículo.

    ResponderEliminar
  3. Pero si no puedo reiniciar mi servidor apache?, por que es un servidor compartido :/

    ResponderEliminar

Podés comentar lo que quieras. Si puteas, perdés.

Licencia


Creative Commons License
Esta obra de Ezequiel Pozzo se encuentra bajo una licencia Creative Commons Atribución-No Comercial-Compartir Obras Derivadas Igual 2.5 Argentina License.
Se puede obtener permisos mas allá de los otorgados por esta licencia en ezequielpozzo.blogspot.com.