Je recherche un bon moyen d'installer plusieurs projets Django complètement différents sur le même serveur en utilisant uniquement un seul nom de domaine. Le fait est que je veux parcourir quelque chose comme: p>
http://192.168.0.1/galalerie/ # Un projet de galerie de photos Django
http://192.168.0.1/blog/ # Un projet de blogging
p>
De cette façon, je peux développer et tester plusieurs projets Django sur le même serveur en faisant référence à différentes URL. (Remarque: je ne pense pas que ce module de sites Django est ce que je cherche car les projets doivent être distincts). À titre d'exemple, PHP se comporte de cette manière, comme je peux installer quelque chose comme PHP-Gallery et PhpMyAdmin sur le même serveur, avec différents chemins d'URL. p>
Est-ce que quelqu'un connaît de bonnes ressources de la configuration de plusieurs projets Django sous plusieurs URL sur un seul serveur utilisant Apache (avec mod_python ou mod_wsgi)? Des choses que je serais intéressée par la connaissance, c'est comment configurer l'Apache.conf, la configuration possible Virtualenv et les modifications apportées aux URLs.py pour l'adapter. La plupart des exemples de déploiement de Django que je vois sont pour une application par domaine ou sous-domaine.
Tout conseil est très apprécié. P>
merci,
Joe p>
6 Réponses :
Faites de multiples projets Django, chacun avec une seule application ( i Utilisez ceci , et ça se détache sans attelage. P> Si vous demandez un tutoriel à part entière / à pas à pas pour établir quelque chose comme ça, je suis désolé de ne pas avoir ça. Je viens de suivre le long de la documentation de Django et je suis venu avec cela. P> p> frontend code> par exemple) et utilisez le mappage d'URL de Django pour faire quelque chose comme ceci:
Une approche consiste à déployer les applications à Apache exécutant sous MOD_WSGI en mode Daemon. La documentation peut être trouvée ici: http://code.google.com/p/modwsgi/ wiki / intégrationwithdjango p>
Mode Daemon Par lui-même, ce n'est pas la solution s'ils parlent de différents projets.
Dans votre question, vous semblez utiliser Si vous souhaitez déployer plusieurs applications, vous souhaitez créer un seul projet et copier chaque application dans le répertoire de projet. Si vous regardez le tutoriel, vous verrez comment inclure une application dans l'URLCONF. Répétez simplement que pour chacun, en veillant à ce que les regex sont corrects. P>
Le point clé ici est que vous obtenez Apache fonctionner pour votre projet Django global, puis vous utilisez l'URLCONF interne de Django pour configurer où chaque application peut être consultée. N'essayez pas de courir plusieurs projets sous la racine de la même URL - c'est presque certainement un signe que vous le faites mal. P>
Si vous parlez de plusieurs projets sous un seul domaine, nous résolvons ce problème avec les sous-domaines. p>
Depuis que les projets Django que nous construisons sont (généralement) conçus pour vivre à la racine du domaine lorsqu'ils sont réellement déployés, si vous utilisez Si vous essayez de déployer réellement des applications telles que celle-ci, créez un seul projet Django et utilisez l'URLCONFS pour inclure chaque application Django à une autre sous-URL. P> Projects code> et
apps code> interchangeable. Ils signifient des choses séparées à Django. Un projet
code> inclut le fichier de configuration, la configuration de la base de données et l'URLCONF global, et c'est ce que vous voulez à la racine de votre domaine. Une application
code> est une pièce de code fonctionnelle individuelle (généralement) une tâche. P>
app1.example.com.com code> et
et
app2 code> etc., vous pouvez tester comme si vous déployez, à la racine de chaque domaine. Vous pouvez configurer des sous-domaines exactement comme vous configureriez des domaines de niveau supérieur, puis de vous déplacer sur votre déploiement final est facile. P>
Merci Paul. Vous avez raison, j'ai rencontré des projets et des applications d'échange confus. Je voulais dire que j'aimerais déployer plusieurs projets Django sur le serveur. Désolé pour la confusion. Était une sorte d'espoir qu'il existait un moyen de déployer plusieurs projets Django sur le même serveur similaire à la manière dont on pourrait le faire avec PHP ... Création essentiellement d'un nouveau chemin d'URL dans le même domaine. Je comprends que les mécanismes d'une configuration PHP une installation et d'une configuration de Django sont complètement différents, mais espèrent un type d'espoir le même résultat final: Mydomain.com/project1 MyDomain.com/project2 . ...Suite...
J'espérais éviter les sous-domaines, comme je préférerais éliminer la nécessité d'une dépendance sur un service de noms externe (DNS, fichier d'hôtes). Cette configuration sera principalement utile à celle d'un environnement de test sur mon réseau domestique avec uniquement des adresses IP (pas de noms de noms), où j'installerais peut-être une douzaine de projets Django différents ou de différentes étapes de développement à des fins de test.
Pour l'enregistrement, il est est I> possible d'exécuter des projets Django côte à côte sur des chemins d'URL spécifiques sur le même domaine, mais ce n'est pas joli de configurer.
Gabriel, je ne sais pas quel mécanisme d'hébergement que vous utilisez pour prétendre qu'il n'est pas joli de configurer. Avec mod_wsgi, il est très facile et en aucun cas "pas jolie".
Si c'est vraiment juste à des fins de la maison et de test, avez-vous envisagé de les mettre sur différents ports? Cela rend encore super facile à différencier et vous utilisez des urlconfs similaires à ce que vous seriez dans un environnement de production.
Soit tout droit sur la terminologie. P>
La plupart des exemples que vous voyez sur le Web sont pour un projet Django Projet Strong> par domaine. Chaque projet peut contenir plusieurs applications À partir de là, je suppose que vous vous référez au déploiement de plusieurs projets em> sur un seul domaine. (Sinon, votre question est annulée). P>
Ceci peut facilement être résolu avec un déploiement approprié par répertoire (cela dépend de la méthode de déploiement que vous utilisez) et de vous assurer que vos URL ne supposent pas qu'ils existent sur la racine de domaine. P>
Oui, je parle de déployer plusieurs projets par domaine. Désolé pour la confusion. Merci pour votre réponse
D'autres ont couvert l'utilisation de plusieurs applications dans un projet Django. Si toutefois, vous vouliez dire des projets et / ou une seule application dans chaque projet, la réponse simple est d'utiliser une directive séparée WSGISScriptionnaire pour chaque projet si vous utilisez mod_wsgi. Chacun de ce projet peut éventuellement être délégué à un groupe de processus Daemon mod_WSGI afin de permettre à chacun d'être redémarré séparément sans redémarrer l'ensemble de Apache, mais le mode Daemon est une chose supplémentaire qui peut être faite et non la solution elle-même. P>
Impressionnant, je ferai des recherches sur la directive WSGISScriptionnel. Merci pour le pointeur.
J'ai été dans des situations où je ne pouvais pas utiliser des sous-domaines, et la façon de gérer cela avec Django est assez simple.
À peu près tout dans votre fichier de paramètres sera comme une application Django régulière, avec L'exception de veiller à ce que ces paramètres incluent votre chemin de projet: p> Le session_cookie_path est essentiel pour empêcher toutes vos applications sur le même domaine de réécrire les cookies. P> Les instructions ci-dessus doivent couvrir le côté Django, mais il reste encore plus de travail à faire sur le côté serveur Web. Par exemple, si vous utilisez Apache + Mod_WSGI, vous devez vous assurer que chaque projet a son propre script WSGI chargé comme celui-ci: p> etc. P> p>
Merci pour ce grand exemple. Bon à noter sur le chemin du cookie aussi!
J'ai pu obtenir un projet en cours d'exécution à l'aide de cette approche.
Comment allez-vous sur I18N_Patterns qui réduit le code de langue aux motifs et contourcent ainsi votre URL racine / galerie /