2010-05-12 24 views
12

Tengo dos proyectos de Django distintos, que deseo ejecutar en un solo dominio usando mod_wsgi. Con mod_python, creo que había una manera de hacerlo, donde ciertas rutas de URL se mapearían en un proyecto de Django, y otras rutas asignadas al otro proyecto, todas a nivel de servidor.múltiples proyectos de django, mod_wsgi, dominio único

¿Es posible hacer esto con mod_wsgi, y si es así, cómo?

Cosas que he considerado: qué incluye la descripción del host virtual Apache, qué se incluye en los archivos application.wsgi, etc. Pero no he resuelto exactamente cómo hacerlo.

Gracias!

Respuesta

8

Esto no debería ser complicado. Es solo una cuestión de establecer la directiva WSGIScriptAlias; necesitará dos de estos, uno para cada ruta, cada uno de los cuales apunta a un archivo separado .wsgi que contiene la configuración de su proyecto.

+0

Gracias! Esto funcionó! Tan simple, no sé por qué no pensé en eso ... – DavidG

+0

Marcar como la respuesta hubiera sido útil para quienes se encuentren con esta en el futuro. – grantk

7

También estoy trabajando con Apache y estoy ejecutando varios proyectos de Django con un dominio. Sólo hay dos cosas que tienes que hacer:

  1. modificar sus archivos de host virtuales

    Desde que estoy usando Debian Tengo un archivo de host virtual para cada dominio Estoy de alojamiento. En su archivo vhost debe tener múltiples secciones vhost. Uno para cada proyecto Dentro de estas secciones puede definir WSGIScriptAlias.

    <VirtualHost *:80> 
        ... 
    WSGIScriptAlias//path/to/project1.wsgi 
    ... 
    </VirtualHost> 
    
    <VirtualHost *:80> 
        ... 
        WSGIScriptAlias//path/to/project2.wsgi 
        ... 
    </VirtualHost> 
    

    Por supuesto, tiene que agregar toda la demás información necesaria. Los proyectos 1 y 2 ciertamente tendrán diferentes subdominios. Por ejemplo, project1.yourdomain.com y project2.yourdomain.com.

  2. Escribir sus archivos * .wsgi

    Hay muchas formas de escribir y almacenar archivos * .wsgi. No conozco las mejores prácticas. En mi caso, los guardo en la carpeta de mi proyecto.

    Este es un ejemplo:

    import os 
    import sys 
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
    sys.path.append('/path/to/your/project') 
    import django.core.handlers.wsgi 
    application = django.core.handlers.wsgi.WSGIHandler() 
    

    que he visto un montón de otros archivos * .wsgi con más "mágica". Pero esto debería hacerte comenzar. Puede encontrar muchos ejemplos en Internet.

Espero que responda a tu pregunta. No tengas miedo de hacer más preguntas.

+0

Gracias, Jens, pero no quiero subdominios separados (si es posible). Quiero un único dominio para múltiples proyectos, pero con urls mapeadas al proyecto apropiado en el nivel del servidor. – DavidG

+0

¿Desea * www.yourdomain.com/project1/* y * www.yourdomain.com/project2/* ?? – Jens

+0

Sí, casi. (En realidad, quiero que project1 sea www.yourdomain.com y project2 que sea www.yourdoamin.com/project2 ...) – DavidG

Cuestiones relacionadas