2010-03-26 8 views
0

Généralement, j'ai eu la chance d'avoir une configuration assez simple de Django et Apache. Mais maintenant j'écris plusieurs applications qui vont s'asseoir sur le même serveur et j'en ai besoin pour avoir des domaines individuels.URL de redirection/remappage vers une application Django, en utilisant DNS ou Apache

Les applications sont disponibles en direct sur www.myserver.com/app/app1 (app2 ...) et je souhaite y accéder via www.someawesomedomain.com. Je ne veux pas de redirection puisque je ne veux pas exposer le chemin sous-jacent. Quelle est la meilleure façon de procéder dans le contexte de 5 à 10 sites?

J'utilise Apache2.

Répondre

0

Votre meilleur pari ici est probablement un fichier settings.py et urls.py unique pour chaque domaine.

Vous disposez d'un fichier de paramètres principal contenant tous vos paramètres communs, puis d'un fichier de paramètres par site qui importe tout ce qui est commun et remplace le paramètre ROOT_URLCONF.

Vous pouvez disposer vos paramètres quelque chose comme ceci:

- configs 
-- settings.py 
-- site1 
--- settings.py 
--- urls.py 
-- site2 
--- settings.py 
--- urls.py 
... 

Puis, dans chacun de vos paramètres du site les fichiers que vous feriez quelque chose comme:

from projectname.configs.settings import * 

ROOT_URLCONF = 'projectname.configs.site1.urls' 

En supposant que vous utilisez mod_wsgi sur apache alors vous feriez quelque chose comme ça dans chaque fichier wsgi, en pointant sur le module de paramètres pertinent pour ce site

os.environ["DJANGO_SETTINGS_MODULE"] = "projectname.configs.site1.settings" 

Cette approche vous permet également de tirer parti de la structure des sites django assez facilement, en spécifiant un SITE_ID unque dans chaque fichier de paramètres.

La seule vraie astuce pour obtenir ce droit est de savoir comment gérer le chemin Python pour que toutes les importations fonctionnent. Si vous n'aimez pas avoir à créer manuellement beaucoup de fichiers (5-10 sites sont probablement très bien, mais beaucoup plus serait ennuyeux) alors vous pouvez écrire une commande de gestion pour générer tous les fichiers.

Questions connexes