Le déploiement de django dans un serveur de production
Tout d'abord s'il vous plaît laissez-moi être clair que je suis un utilisateur de windows et de très nouveau dans le monde du web. Pour les derniers mois, j'ai été l'apprentissage de python et django, et il a été une grande expérience pour moi. Maintenant, j'ai en quelque sorte créé un petit projet que je tiens à déployer dans le serveur de production. Depuis django a intégré dans le serveur de développement, il n'y a pas de problème pour moi. Mais maintenant que j'ai pour le déployer sur un serveur de production, j'ai googlé autour et a trouvé Nginx + uWSGI ou Nginx + Gunicorn comme la meilleure option pour elle. Et comme uWSGI et Gunicord sont incompatibles avec Windows, je pense que je devrais adapter Ubuntu ou autre système Unix.
Donc mes questions sont:
- Juste pour être clair, que je vais avoir à travailler avec l'un des ci-dessus, s'il vous plaît expliquez-moi pourquoi ai-je besoin de deux serveurs?
- Si je dois m'adapter à l'environnement Ubuntu, dois-je apprendre Ubuntu scripts shell, SSH et d'autres choses? Ou le fournisseur d'hébergement va m'aider à le faire?
- S'il vous plaît laissez-moi être au courant de quoi d'autre ai-je besoin pour le ci-dessus concernés.
Je vous remercie beaucoup pour votre temps et s'il vous plaît pardon si ma question était une lame de question. En espérant une réponse positive de réponses.
- vous ne devez pas utiliser deux serveurs, vous pouvez configurer Nginx + uWSGI + apache2 sur un seul serveur , et tout bien tout configuré pour travailler ensemble, Nginx et gunicorn sont presque les mêmes choses , vous n'avez qu'à utiliser l'un d'eux. je suis sous ubuntu et c'est OK, SSH à intégrer avec ubuntu, vous n'avez pas apprendre grand chose pour que
- J'ai interprété la question comme deux PROCESSUS serveur plutôt que sur deux machines distinctes; je suis d'accord qu'il n'y a pas besoin pressant d'utiliser deux machines distinctes pour servir de nginx + quelque chose d'autre. Je ne suis pas d'accord que nginx et gunicorn sont la même chose ou même dans la même classe de logiciel; nginx est un serveur proxy inverse et la statique du serveur et gunicorn est dédié application wsgi serveur web.
Vous devez vous connecter pour publier un commentaire.
Une configuration typique implique deux processus serveur (qui peut être exécuté sur le même matériel réel ou virtuel, serveur), de sorte que le serveur proxy en frontal peut mettre en mémoire tampon les clients lents. Par exemple: une lente client va se connecter à nginx avec une demande. Nginx va transmettre la demande à Gunicorn et Gunicorn répondra. Nginx sera alors consommer le Gunicorn réponse immédiatement, ce qui libère les Gunicorn ressources immédiatement. À ce stade, le client lente peut prendre autant de temps qu'il veut consommer de la réponse de Nginx sans occuper beaucoup de la manière de ressources du serveur. Des solutions de rechange pour les deux-serveur-modèle de processus sont à utiliser asynchrone travailleurs avec Gunicorn et mettre Gunicorn en face, ou d'utiliser un async-sync combo comme Serveuse. Nginx en frontal a l'avantage de doubler comme un prêt-à-utiliser la statique serveur.
Note que "les clients lents" peut décrire: téléphones mobiles que de perdre leur connexion et leur laisser le socket TCP suspendus jusqu'à ce que délai milieu de demande; les téléphones mobiles qui sont juste lent; des connexions non fiables de tous types; hostile déni-de-service pour les clients qui sont délibérément essayer d'utiliser les ressources du serveur; parfois, une vieille connexion qui a un hoquet ou de la défaillance, pour quelque raison. C'est donc un problème qui affecte presque tout le site.
Vous n'aurez pas besoin de scripts shell en soi, mais s'habituer à Ubuntu va prendre un certain temps. Il y a beaucoup à apprendre, même à l'extérieur de script, comme la façon d'utiliser le gestionnaire de paquets, la façon de configurer les paquets une fois qu'ils sont installés dans des façons qui ne pas confondre les futures mises à jour, etc. Et vous allez certainement avoir à apprendre à utiliser SSH; il est l'un des plus fondamentaux outils d'administration de serveur dans le monde *nix.
Une alternative à l'apprentissage de l'utilisation d'Ubuntu ou un autre serveur de la plateforme est d'utiliser une Plate-forme-comme-un-Service de l'option comme Heroku, comme PaaS fournisseurs d'hébergement va vraiment prendre soin de ce genre de choses pour vous. Je recommande cette approche. Cela dit, même si je pense que PaaS est une bonne option pour les personnes qui souhaitent se concentrer sur le développement et pas l'admin du serveur, indépendamment de leur niveau de compétence, il est également vrai qu'un peu d'expérience avec Linux plates-formes de serveur va un long chemin en vous aidant à comprendre l'environnement que votre code s'exécute dans. Donc, même si vous allez avec PaaS), vous continuez de bénéficier de bricoler avec Ubuntu un peu (ou beaucoup).
Un autre avantage d'un PaaS, c'est que normalement, leur infrastructure gère l'Nginx partie de la transaction (mise en mémoire tampon de la lenteur de demandes via un proxy). C'est le cas avec Heroku, par exemple. Donc vous n'aurez pas à vous soucier de la partie de l'infrastructure à tous.
Cette partie de la question est trop vaste pour répondre, mais laissez-moi savoir dans les commentaires si vous avez besoin de précisions.
Je suis en train de faire almoast comme dans ce tutoriel: http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/
Nginx est mon proxy pour django app en cours d'exécution sur gunicorn et sa portion de la statique, virtualenv pour mon python environnement, superviseur de regarder mon application en cours d'exécution.
Il est possible que vous exécutez dans une erreur si pas l'utilisation de Postgresql, demandez alors je vais vous aider (MySQL utilisé dans le passé maintenant, c'est Postgresql)
Tout d'abord, il n'y a pas besoin d'utiliser Ubuntu si vous êtes heureux avec Windows. Je ne sais pas si nginx fonctionne sur Windows, mais je serais très surpris si il ne le fait pas (en fait, ici sont les nginx docs pour l'installation sur Windows). Apache, pendant ce temps, certainement ne fonctionne sur Windows. La documentation de Django a une explication complète de comment configurer Apache/mod_wsgi pour servir de Django.
Vous n'avez pas besoin de deux serveurs. Je ne suis pas sûr de savoir pourquoi vous pensez que vous n': la raison habituelle pour qui c'est d'avoir le statique actifs sur un serveur distinct, mais vous ne mentionnez pas que comme une raison. Puisque vous êtes les seuls à parler d'un petit site, même si vous ne avez même pas besoin de le faire. Un serveur configuré pour servir à la fois de Django et de la statique des actifs fera l'affaire. De nouveau, les docs expliquer exactement comment le faire.