2013-06-15 3 views
1

Je développe une application web en utilisant django pour le serveur. Il a des clients dans android, ios et frontend. Je pensais utiliser des sous-domaines pour différencier les URL de ces clients. La différenciation est due au fait que les réponses aux URL sont différentes pour différents clients. J'espérais être en mesure de faire en utilisant sous-domaines comme android.example.com, ios.example.com ... etc. Mes sous-domaines sont fixes.Hébergement sous-domaine avec Django + Nginx + Gunicorn

Pouvez-vous m'aider concernant l'approche que je devrais prendre pour y parvenir. Certaines options que j'ai lu sont

  • Hébergement deux projets différents avec la même base de données. (Il regarde très bien pour moi, mais peut-être pas l'optimum)
  • Hébergement sur la même instance en utilisant le cadre de sites. (Je ne sais pas à comment bon cette option est)
  • Hébergement en utilisant l'hôte virtuel (Vraiment pas capable de comprendre comment y parvenir). Utilisation d'un middleware de sous-domaine, comme mentionné dans de nombreuses réponses et également dans certains extraits de Django.

S'il vous plaît aidez-moi avec la meilleure option et si possible avec des liens vers des tutoriels sur la façon de le réaliser. Merci.

Répondre

1

"Utiliser le framework de sites" est en quelque sorte identique à l'hébergement de deux projets avec la même base de données. Si vous utilisiez le framework de sites, vous auriez des instances séparées pour chaque sous-domaine qui partagent la même base de code et la même base de données, mais qui doivent d'abord différer dans un paramètre, à savoir SITE_ID.

Si vous êtes en mesure d'exécuter plusieurs instances cela pour vous a quelques avantages:

  • Vous n'avez pas besoin de traitement supplémentaire via un middleware
  • Vous pouvez facilement choisir des paramètres différents pour chaque site, par exemple . différents chemins de modèle, utilisation de middleware différent, etc., et même personnalisation d'URL par projet si nécessaire.
  • Vous faites déjà une sorte d'équilibrage de charge, car vous dirigez des requêtes pour séparer des instances, même si un site plante, il ne devrait pas affecter les autres

Si vous ne pouvez exécuter qu'une seule instance, je suppose que votre seul choix est d'utiliser quelque chose comme un middleware, par exemple. django-mobile alors peut-être quelque chose à regarder car il vous offre un bon ensemble d'outils pour déterminer le type de client etc ...

Mais à part cela, notez qu'il ne sera pas toujours la meilleure pratique d'avoir des domaines séparés avec le même contenu quand il s'agit de SEO.

+0

Merci. SEO n'est pas du tout un critère car je ne veux pas que le moteur de recherche affiche les URL pour les clients mobiles et tous. Tout ce que je veux qu'ils montrent est l'URL réelle sur la page Web. Je ne comprenais toujours pas une chose cependant, devrais-je préférer le cadre ou les projets de sites. Et pas deux projets différents utilisant la même base de données avec des modèles différents seront un problème. Juste un petit souci sera-t-il un problème si la clé secrète dans les deux projets est différente. –

+0

@SaranshMohapatra Si les sites doivent principalement utiliser les mêmes applications, etc., allez avec le framework de sites ... Seulement si votre base de code diffère vraiment pour chaque site créer des projets séparés - mais ne le faites pas si ce n'est pas nécessaire, comme des projets séparés sera difficile à maintenir ... –

+0

@Bernahard Vallant Donc, fondamentalement, vous dites d'utiliser le framework de sites. Ouais, fondamentalement, ils utilisent la même chose, mais seules les différences sont pour certaines demandes, les réponses sont différentes pour chaque client. Mais ils sont fondamentalement la même application avec presque tout similaire. –

Questions connexes