2010-05-12 9 views
12

J'ai deux "projets" Django distincts, que je veux exécuter sur un seul domaine en utilisant mod_wsgi. Avec mod_python, je crois qu'il y avait un moyen de faire cela, où certains chemins d'URL seraient mappés à un projet Django, et d'autres chemins mappés à l'autre projet, tous au niveau du serveur. Est-il possible de le faire avec mod_wsgi, et si oui, comment? Choses que j'ai prises en compte: que se passe-t-il dans la description de l'hôte virtuel Apache, dans les fichiers application.wsgi, etc. Mais je n'ai pas compris exactement comment procéder.plusieurs projets django, mod_wsgi, domaine unique

Merci!

Répondre

8

Cela ne devrait pas être compliqué. Il s'agit simplement de définir la directive WSGIScriptAlias - vous en aurez besoin de deux, un pour chaque chemin, chacun pointant vers un fichier .wsgi distinct qui contient les paramètres de votre projet.

+0

Merci! Cela a fonctionné! Si simple, je ne sais pas pourquoi je n'y ai pas pensé ... – DavidG

+0

Marquer comme la réponse aurait été utile pour ceux qui viennent à travers celui-ci dans le futur. – grantk

7

Je travaille également avec Apache et j'exécute plusieurs projets Django avec un domaine. Il y a seulement deux choses que vous devez faire:

  1. Modifier vos fichiers Virtual Host

    Depuis que je suis en utilisant Debian je un fichier vhost pour chaque domaine, je suis d'hébergement. Dans votre fichier vhost, vous devriez avoir plusieurs sections vhost. Un pour chaque projet. Dans ces sections, vous pouvez définir WSGIScriptAlias.

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

    Bien sûr, vous devez ajouter toutes les autres informations nécessaires. Les projets 1 et 2 auront certainement différents sous-domaines. Par exemple project1.yourdomain.com et project2.yourdomain.com.

  2. Ecrivez vos fichiers * .wsgi

    Il y a plusieurs façons d'écrire et de stocker les fichiers * .wsgi. Je ne connais pas de bonnes pratiques. Dans mon cas, je les stocke dans mon dossier de projet.

    Voici un exemple:

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

    J'ai vu beaucoup d'autres fichiers * .wsgi avec plus de « magie ». Mais cela devrait vous aider à démarrer. Vous pouvez trouver beaucoup d'exemples partout sur Internet.

L'espoir qui répond à votre question. N'ayez pas peur de poser plus de questions.

+0

Merci, Jens - mais je ne veux pas de sous-domaines séparés (si possible). Je veux un domaine unique pour plusieurs projets, mais avec des URL mappées au projet approprié au niveau du serveur. – DavidG

+0

Donc, vous voulez * www.yourdomain.com/project1/* et * www.yourdomain.com/project2/* ?? – Jens

+0

Oui, à peu près. (En fait, je veux que project1 soit www.votredomaine.com et project2 soit www.yourdoamin.com/project2 ...) – DavidG

Questions connexes