2010-05-12 1 views
12

Ho due distinti progetti "Django", che voglio eseguire su un singolo dominio usando mod_wsgi. Con mod_python, credo che ci fosse un modo per farlo, dove determinati percorsi di url sarebbero stati mappati su un progetto Django, e altri percorsi mappati all'altro progetto, tutti a livello di server.progetti multipli di django, mod_wsgi, dominio singolo

E 'possibile farlo con mod_wsgi, e se sì, come?

Cose che ho preso in considerazione: ciò che accade nella descrizione dell'host virtuale di Apache, cosa accade nei file application.wsgi, ecc. Ma non ho capito esattamente come farlo.

Grazie!

risposta

8

Questo non dovrebbe essere complicato. È solo questione di impostare la direttiva WSGIScriptAlias: ne occorrono due, uno per ogni percorso, ciascuno dei quali punta a un file .wsgi separato che contiene le impostazioni del progetto.

+0

Grazie! Questo ha funzionato! Così semplice, non so perché non ci ho pensato ... – DavidG

+0

Contrassegnare come risposta sarebbe stato utile per coloro che si imbattono in questo in futuro. – grantk

7

Sto lavorando anche con Apache e sto eseguendo più progetti Django con un dominio. Ci sono solo due cose che dovete fare:

  1. modificare i file host virtuali

    Dal momento che sto usando Debian ho un file vhost per ogni dominio Sto ospitando. Nel tuo file vhost dovresti avere più sezioni vhost. Uno per ogni progetto. All'interno di queste sezioni è possibile definire WSGIScriptAlias.

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

    Ovviamente è necessario aggiungere tutte le altre informazioni necessarie. I progetti 1 e 2 avranno sicuramente diversi sottodomini. Ad esempio project1.yourdomain.com e project2.yourdomain.com.

  2. Scrivi i tuoi file * .wsgi

    Ci sono molti modi di scrivere e memorizzare i file * .wsgi. Non conosco le migliori pratiche. Nel mio caso li memorizzo nella cartella del mio progetto.

    Questo è un esempio:

    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() 
    

    Ho visto un sacco di altri file * .wsgi con più "magico". Ma questo dovrebbe iniziare. Puoi trovare molti esempi su Internet.

Spero che risponda alla tua domanda. Non aver paura di fare più domande.

+0

Grazie, Jens - ma non voglio sottodomini separati (se possibile). Voglio un singolo dominio per più progetti, ma con gli URL associati al progetto appropriato a livello di server. – DavidG

+0

Quindi vuoi * www.tuodominio.com/progetto1/* e * www.tuodominio.com/progetto2/* ?? – Jens

+0

Sì, praticamente. (In realtà, voglio che project1 sia www.yourdomain.com e project2 sia www.yourdoamin.com/project2 ...) – DavidG