Correr Varias Instancias de Django en el mismo servidor Apache


Esta experiencia la viví ayer, claro que no es nada del otro mundo pero es algo que una ves intenté hacer y no pude, siempre tuve la duda, hasta que ayer se me presentó el problema.

Necesitaba publicar dos sitios hechos con Django en el mismo servidor web, pero no podía usar VirtualHosting, los sitios se tenían que ver bajo las urls:

1. http://midominio.com/sitios/sitiouno/

2. http://midominio.com/sitios/sitiodos/
Inicialmente tenia a /sitiouno/ publicado con la siguiente configuración:

<Location “/sitios/sitiouno/”>
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath “[‘/var/www/sitios-‘] + sys.path”
SetEnv DJANGO_SETTINGS_MODULE sitiouno.settings
PythonAutoReload On
</Location>

#Esta parte es el directorio de las imagenes….
<Location “/jc/vi/cave/imagenes/”>
SetHandler None
</Location>
<LocationMatch “\.(jpg|gif|png)$”>
SetHandler None
</LocationMatch>

Cuando publiqué /sitiodos/ con la misma configuración comenzaron a mezclarse los dos sitios y dar algunos errores  en el acceso de algunas urls. Comencé a leer el libro de Django y rápidamente encontré la solución, usar la directiva PythonInterpreter en cada directiva </Location> quedando el fichero de configuración de la siguiente forma:

<Location “/sitios/sitiouno/”>
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath “[‘/var/www/sitios/’] + sys.path”
SetEnv DJANGO_SETTINGS_MODULE sitiouno.settings
PythonInterpreter sitiouno
PythonAutoReload On
</Location>
……..

……..
<Location “/sitios/sitiodos/”>
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath “[‘/var/www/sitios/’] + sys.path”
SetEnv DJANGO_SETTINGS_MODULE sitodos.settings
PythonInterpreter sitiodos
PythonAutoReload On
</Location>
…..

……

De esta forma podemos correr varias instancias de Django bajo el mismo servidor Apache

Espero que esto sea de utilidad para todos, y como dije al principio, no es nada nuevo, pero quizas a alguien le resultó confuso la primera ves.

Anuncios