43 votes

Configuration du serveur la plus propre et la plus rapide pour Django

Je suis sur le point de déployer un renforcement du site propulsé par Django. J'ai un dédié Ubuntu Server.

Je suis vraiment confus sur lequel serversoftware à utiliser. Donc je me suis dit: pourquoi ne pas demander à stackoverflow.

Ce que je cherche est:

  • Facile à mettre en place
  • Rapide et facile sur les ressources
  • Peut servir mediafiles
  • Capable de servir plusieurs djangosites sur le même serveur
  • Je préfère ne pas installer PHP ou quoi que ce soit d'autre qui suce des ressources, et pour lequel je n'ai pas besoin.

J'ai entendu parler de mod_wsgi et mod_python sur Apache, nginx et lighty. Qui sont les avantages et les inconvénients de ces et ai-je oublié quelqu'un?

@Barry: Quelque part, je me sens comme Apache est lourd pour moi. Ce sujet de les solutions de rechange?

@BrianLy: Ok je vais vérifier mod_wsgi un peu plus. Mais pourquoi ai-je besoin d'Apache si je servir les fichiers statiques avec lighty? J'ai aussi réussi à servir le django app lui-même avec lighty. Est-ce mauvais de toute façon? Désolé d'être si stupide :-)

Mise à JOUR: Qu'lighty et nginx - quelles sont les utilisations des cas, lorsque ceux-ci sont le choix parfait?

26voto

jamting Points 893

Depuis que je suis à la recherche pour un peu plus en profondeur des réponses, j'ai décidé d'étudier la question de moi-même en profondeur. S'il vous plaît laissez-moi savoir si j'ai mal compris quelque chose.

Certains recommandation générale sont à utiliser un serveur pour la manipulation des médias. Par séparer, je veux dire un serveur web qui n'est pas en cours d'exécution de Django. Ce serveur peut être par exemple:

  • Lighttpd (Lighty)
  • Nginx (EngineX)
  • Ou une autre lumière-poids serveur

Ensuite, pour Django, vous pouvez aller dans des chemins différents. Vous pouvez soit:

  • Servir Django via Apache et:

    • mod_python

      C'est stable et recommandé/bien documentés. Contre: utilise beaucoup de mémoire.

    • mod_wsgi

      Ce que je comprends, mod_wsgi est une nouvelle alternative. Il semble être plus rapide et plus facile sur les ressources.

    • mod_fastcgi

      Lors de l'utilisation de FastCGI vous déléguez la portion de Django à un autre processus. Depuis mod_python comprend un interpréteur python dans chaque requête qu'il utilise beaucoup de mémoire. C'est une façon de contourner ce problème. Il y a aussi quelques soucis de sécurité.

      Ce que vous faites est que vous commencez votre django fastcgi serveur dans un processus distinct, puis configure apache via réécrit à l'appel de ce processus, en cas de besoin.

Ou vous pouvez:

  • Servir de django sans l'aide d'Apache , mais avec un autre serveur qui prend en charge FastCGI nativement:

    (La documentation mentionne que vous pouvez le faire si vous n'avez pas de Apache besoins spécifiques. Je suppose que la raison doit en être pour économiser de la mémoire.)

    • Lighttpd

    C'est le serveur qui s'exécute sur Youtube. Il semble rapide et facile à utiliser, mais j'ai vu des rapports sur memoryleaks.

    • nginx

    J'ai vu des critères de référence en prétendant que ce serveur est encore plus rapide que lighttpd. C'est principalement documenté en russe bien.

Une autre chose, à cause des limitations en Python votre serveur doit être en cours d'exécution dans la fourche mode, note filetée.

C'est donc au courant de mes recherches, mais je veux plus d'opinions et d'expériences.

9voto

Oli Points 65050

Je suis l'aide de Cherokee.

En fonction de leur indice de référence (grain de sel avec eux), il gère la charge mieux que les deux Lighttpd et nginx... Mais ce n'est pas pour ça que je l'utilise.

Je l'utilise parce que si vous tapez cherokee-admin, il commence un nouveau serveur, vous pouvez vous connecter (avec un mot de passe) et de configurer le serveur tout entier, à travers un magnifique fait de webmin. C'est une killer feature. Il a déjà m'a sauvé beaucoup de temps. Et c'est de sauver mon serveur beaucoup de ressources!

Comme pour django, je suis en cours d'exécution comme une tige de SCGI processus. Fonctionne bien. Cherokee peut garder en cours d'exécution trop. Encore une fois, très belle fonctionnalité.

L'actuel Ubuntu repo version est très ancienne, donc je vous conseille d'utiliser leurs PPA. Bonne chance.

6voto

Brian Lyttle Points 9344

Comme @Barry dit, la documentation mod_python. Je n'ai pas utilisé Ubuntu en tant que serveur, mais a eu une bonne expérience avec mod_wsgi sur Solaris. Vous pouvez trouver de la documentation pour mod_wsgi et Django sur le mod_wsgi site.

Un examen rapide de vos exigences:

  • Facile d'installation , j'ai trouvé apache 2.2 assez facile à construire et à installer.
  • Rapide et facile sur les ressources , je dirais que cela dépend de votre utilisation et de la circulation. * Vous ne voulez pas de serveur tous les fichiers à l'aide d'Apache et d'utiliser LightTPD (lighty) à un serveur de fichiers statiques.
  • Peut servir de fichiers multimédia , je suppose que vous voulez dire des images, des fichiers flash? Apache peut le faire.
  • Plusieurs sites sur le même serveur Virtuel, serveur d'hébergement sur un serveur Apache.
  • Plutôt de ne pas installer d'autres extensions de Commenter quoi que ce soit que vous ne voulez pas dans la config d'Apache.

5voto

Barry Points 1144

Le moyen officiellement recommandé de déployer un projet django consiste à utiliser mod_python avec apache. Ceci est décrit dans la documentation. Le principal avantage avec cela est qu'il s'agit du moyen de déploiement le mieux documenté, le plus pris en charge et le plus courant. Le con est que ce n'est probablement pas le plus rapide.

2voto

dobrych Points 308

La meilleure configuration n'est pas assez connue je pense. Mais ici, c'est:

  1. Utiliser nginx pour le traitement des requêtes (dynamique de l'application, le contenu statique directement).
  2. Utiliser python serveur web pour servir du contenu dynamique.

Deux plus rapidement des solutions pour python serveur web est:

Vous avez besoin de regarder dans google pour trouver la meilleure configuration pour django (encore en développement).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X