2010-10-04 23 views
2

J'ai deux projets django sur la même machine. Ils sont mis en place en utilisant la configuration standard django/apache/mod_python, essentiellement:Exécution de plusieurs projets Django sous mod_python, sans utiliser VirtualHosts

<Location "/mysite"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings 
    PythonOption django.root /mysite 
    PythonDebug On 
    PythonPath "['/path/to/project/parent'] + sys.path" 
</Location> 

où monsite varie pour les deux projets (dans la directive emplacement, le DJANGO_SETTINGS_MODULE et le django.root). Le PythonPath varie également.

Lorsque seulement une des deux directives de localisation est en place, quel que soit le site pour lequel elle fonctionne correctement. L'une ou l'autre configuration fonctionne seule.

Lorsque j'ai les deux directives de localisation (qui se réfèrent à des chemins d'URL distincts), je ne peux accéder qu'à un seul site. J'ai des directives d'emplacement pour "/ portal" et "/ apitest", et quand je vais à http://mydomain.com/apitest, je reçois toujours le code de "/ portal" étant servi.

Est-il possible de desservir deux sites django à partir du même hôte en incluant simplement plusieurs directives Location, ou est-il nécessaire d'utiliser VirtualHosts?

Merci, David

Répondre

2

Les documents semblent indiquer que vous avez probablement besoin de définir différentes PythonInterpreter valeurs pour chacun de vos blocs d'emplacement. Est-ce que cela règle le problème?

Si vous avez besoin de mettre deux installations de Django dans le même VirtualHost (ou dans différents blocs de VirtualHost qui partagent le même nom de serveur), vous aurez besoin de prendre une précaution particulière pour assurer le cache de mod_python ne gâcher les choses en haut Utilisez la directive PythonInterpreter pour donner différentes directives <Location> interprètes distincts:

<VirtualHost *> 
    ServerName www.example.com 
    # ... 
    <Location "/something"> 
     SetEnv DJANGO_SETTINGS_MODULE mysite.settings 
     PythonInterpreter mysite 
    </Location> 

    <Location "/otherthing"> 
     SetEnv DJANGO_SETTINGS_MODULE mysite.other_settings 
     PythonInterpreter othersite 
    </Location> 
</VirtualHost> 

http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#multiple-django-installations-on-the-same-apacheBlockquoteBlockquotedirectives