Apache ou Nginx pour les applications Django? [fermé]

je veux déployer une application web Django, et donc je dois choisir un serveur web pour servir les fichiers Python.

je dois mentionner que mon site de production sera sur un seul serveur, qui hébergera la base de données et le serveur web. Au fur et à mesure que le momentum prend de l'ampleur, j'ai l'intention de déplacer la base de données vers un serveur dédié, etc.

Voici mes questions:

  1. dois-je utiliser un ou deux serveurs web? Le contexte de cette question est que beaucoup de gens recommandent D'utiliser NginX pour servir des fichiers média statiques et Apache pour servir le Python, qui invite aux questions suivantes:
    1. Pourquoi ne pouvons-nous pas utiliser un seul serveur. Je comprends Qu'Apache peut être une bête à certains moments, donc je suspecterais les gens d'utiliser NginX pour servir à la fois des fichiers média statiques et des fichiers python.
    2. si vous utilisez un serveur, ce qui est mieux, Apache ou NginX. J'ai de l'expérience à Apache, mais je n'ai entendu que de bonnes choses à propos de NginX.
  2. Quels sont les avantages d'utiliser FastCGI par rapport à mod_wsgi?

Merci d'avance

39
demandé sur Barry Steyn 2012-02-06 18:06:19

7 réponses

dois-je utiliser un ou deux serveurs web? Le contexte de cette question est que beaucoup de gens recommandent d'utiliser NginX pour servir des fichiers multimédia statiques et Apache pour servir le Python, qui appelle les questions suivantes: Pourquoi ne pas utiliser un seul serveur? Je comprends Apache peut être une bête parfois, donc je suspecterais les gens d'utiliser NginX pour servir les deux fichiers multimédia statiques et fichiers python.

si vous n'avez actuellement aucun autre sites qui sont déjà configurés d'une manière ou d'une autre, ou vous avez besoin de certaines fonctionnalités spécifiques qui sont mutuellement exclusives entre les différents serveurs, Je ne vois aucune raison d'utiliser plusieurs serveurs. Cela ajoute simplement une complexité et une configuration inutiles.

si vous utilisez un serveur, ce qui est mieux, Apache ou NginX. J'ai de l'expérience à Apache, mais je n'ai entendu que de bonnes choses à propos de NginX.

comme avec tous "ce qui est mieux" questions il s'agit habituellement d'une question de préférence. Et pour obtenir une réponse spécifique, vous aurez probablement besoin de poser des questions plus spécifiques.

Si vous avez déjà une expérience avec un serveur spécifique et vous voulez juste pour obtenir un rapidement, alors je suggère d'aller avec ce que vous connaissez déjà pour le moment. Vous pouvez toujours passer à un autre serveur web plus tard. D'autre part c'est une bonne occasion d'en apprendre davantage sur les solutions de rechange.


tl;dr: j'opterais pour ce qui est plus facile à configurer et à gérer. Personnellement, je pencherais pour un nginx et gunicorn, principalement parce que c'est facile et il ya beaucoup de ressources disponibles si vous devriez obtenir coincé.

Je ne m'inquiéterais pas trop de la performance jusqu'à ce que vous réellement besoin de . Tous les serveurs Web de base sont essayés et testés de sorte qu'il se résume principalement aux exigences de l'application et la charge réelle, qui a besoin de surveillance, de modélisation et d'essais pour peaufiner quoi qu'il en soit.

Quels sont les avantages d'utiliser FastCGI par rapport à mod_wsgi?

des Différences et des usages entre WSGI, CGI, FastCGI, et mod_python en ce qui concerne Python?


articles à lire (certains anciens, Certains nouveaux);

9
répondu kalvatn 2017-05-23 11:54:54

Question 1) Vous pouvez utiliser un seul serveur, mais pour servir des médias statiques une solution comme lighttpd ou nginx sera beaucoup plus rapide. Je m'en tiendrais à Apache si vous voulez vraiment utiliser un seul serveur, il a toute la flexibilité dont vous avez besoin et c'est le serveur web le plus commun.

Question 2) dépend de votre but. Vous pouvez trouver des informations ici: déployant Django (fastcgi, apache mod_wsgi, uwsgi, gunicorn)

2
répondu marue 2017-05-23 12:02:22

Je ne sais pas qui vous recommande D'utiliser à la fois Nginx et Apache, mais c'est une idée horrible. Quel que soit votre choix, l'un ou l'autre agira simplement en tant que proxy inverse, ne servant que des ressources statiques et remettant tout le reste à un sous-processus comme uwsgi.

je préfère Nginx parce que c'est léger et extrêmement rapide de la boîte. Apache peut être tout aussi bon, mais nécessite de construire à partir de la source et savoir exactement quelle configuration utiliser pour correspondre à Nginx. Cependant, Apache a plus de fonctionnalités et est un peu plus facile à utiliser. Cela dépend de vous et des besoins de votre application.

cependant, quel que soit votre choix, vous n'avez besoin que de un -- pas les deux.

2
répondu Chris Pratt 2012-02-06 16:03:27

je pense que les meilleurs choix sont virtualenv, uwsgi et nginx. J'ai changé tous mes serveurs maintenant et je suis vraiment heureux avec la performance.

Voici un bon tutoriel sur comment vous installer serveur http://senya.pl/2011/03/sexy-nginx-uwsgi-stack-for-django-with-virtualenv /

2
répondu nicowernli 2012-02-06 18:47:06
  1. le moins, le mieux.
  2. la meilleure façon de déployer L'application Django sur Nginx est d'utiliser uwsgi . Il est pur WSGI et construit dans pris en charge par la nouvelle version Nginx.
0
répondu risent 2012-02-06 14:49:21

j'ai essayé de suivre le lien suggéré par Nicowernli, mais senya.pl j'étais en bas à ce moment-là. Cela ressemble à un bon tutoriel alternatif.... Je vais essayer, il suffit de lire les deux premiers chapitres, mais semble très complet et vraiment étape par étape:

http://www.abidibo.net/blog/2012/04/30/deploy-django-applications-nginx-uwsgi-virtualenv-south-git-and-fabric-part-1 /

0
répondu michel.iamit 2013-02-22 09:47:30

j'ai utilisé gunicorn + eventlet comme serveur Python, et nginx comme mandataire inverse avec grand succès. Récemment, je suis passé à uWSGI et il semble être tout aussi bonne d'une solution, sinon meilleure. Je n'ai pas encore essayé apache et Django bien que j'étais un utilisateur apache avant D'utiliser Django. Voici un bon rapport sur la façon de tout faire: http://radtek.ca/blog/django-production-deployment-via-nginx-and-gunicorn-and-virtualenv/

0
répondu radtek 2014-02-02 05:52:02