/ / Stratégies de déploiement de l'application Django - Django, Apache, déploiement Web

Stratégies de déploiement de l'application Django - django, apache, déploiement Web

J'ai une question qui est probablement plus générale que le développement lié à Django. Le fond est assez simple:

Je travaille sur un projet dont les pages sont principalementassocié à une application Web (c’est ce que j’utilise pour Django). Cependant, en plus des pages relatives aux applications, il existe de nombreuses pages auxiliaires (telles qu'une page de destination, une page de FAQ, une page de contact, etc.) qui n'ont fondamentalement rien à voir avec l'application Web.

Quelle est la stratégie standard pour déployer une telleun projet? Il semble imparfait de router les requêtes vers ces pages statiques via Django. Ce qui semble logique consiste à faire fonctionner deux serveurs: un responsable de l’application Django et un serveur distinct chargé de servir les pages statiques (y compris, peut-être, le contenu statique utilisé par la partie application du site Web).

Quels sont les principes directeurs qui devraient être utilisés pour prendre ces décisions?

Réponses:

4 pour la réponse № 1

Il n’est pas rare d’exécuter Django côte à côte avec un site statique ou un autre CMS.

Vous auriez besoin d’un serveur frontal pour acheminer la demande au contenu statique ou à un CMS.

Il y a deux stratégies communes:

  1. Utilisez le préfixe de l’URL pour déterminer l’orientation à suivre (par exemple, exemple.com/static/ dans les fichiers statiques et exemple.com/ dans Django). Vous auriez besoin d'un serveur frontal pour acheminer la demande au contenu statique ou à une application Web / CMS écrite dans un autre langage / cadre (configuré avec la directive Alias ​​dans Apache).

  2. Placez le serveur d'applications et le serveur de fichiers statiquessur un domaine / sous-domaine séparé (par exemple, static.example.com à static et app.example.com à Django). Vous pouvez le faire en configurant un serveur frontal pour qu'il serve sur un seul ordinateur (configuré avec VirtualHost sur Apache) ou en tant qu'ordinateur distinct. Dans les deux cas, vous devrez configurer le DNS pour qu'il pointe vers vos sous-domaines vers la ou les bonnes machines.

Le premier est plus simple à configurer, mais le second vous permet de mieux évoluer.

Apache, Nginx ou uWSGI sont des serveurs couramment utilisés pour les applications front-end d’un serveur d’applications, mais pratiquement tous les serveurs Web de qualité de production peuvent le faire.

En fait, la documentation de déploiement de Django (par exemple, Apache) vous demanderait toujours d'avoir votre statiqueles fichiers servis par le serveur frontal, même dans les installations de Django uniquement, car Django n’était pas conçu pour servir efficacement des contenus statiques contrairement aux serveurs Web frontaux.

le django.contrib.staticfiles application est là pour permettre à Django deFaites référence à un fichier statique hébergé sur un serveur différent et passez facilement du contenu statique au serveur intégré de Django pendant le développement mais au serveur frontal en production.