Django & Couchdb: Comment déployer sans serveur Apache

Je suis nouveau sur CouchDB alors soyez gentil …

J’apprécie vraiment les fonctionnalités de CouchDB et d’après ce que je vois, cela complète vraiment bien Django, mais je ne comprends pas vraiment si les deux peuvent être déployés dans un environnement commercial. Voici ma question:

Si vous décidez d’utiliser Django avec CouchDB, cela signifie-t-il que vous devez déployer en utilisant le serveur Apache? Idéalement, il serait bon que CouchDB s’occupe de servir des pages. D’après ce que j’ai compris, il semble que si vous voulez gérer la logique Web en utilisant le framework Django, vous devez utiliser un serveur Web compatible CGI.

MODIFIER:

Plus de précision: est-il possible d’utiliser le framework Django et CouchDB SANS un autre serveur (le plus souvent Apache Server ou le serveur de développement Django) pour gérer les requêtes? Raison d’être: CouchDB est déjà conçu pour gérer de nombreuses connexions simultanées et est conçu pour évoluer correctement. Utiliser CouchDB comme une perte de temps et ne pas l’utiliser pour servir des pages directement.

J’utilise Django avec Couchdb en production. Nous avons Django sous Apache, mais l’utilisation de Couchdb n’affecte pas le fonctionnement de Django.

Dans Django, vous utiliseriez simplement une bibliothèque pour parler à Couchdb. Couch utilise http comme protocole utilisé par la bibliothèque pour communiquer avec la firebase database. Par défaut, Couch écoute uniquement sur localhost.

Couchapp peut servir des pages, mais je trouve que la façon dont Django le fait est plus élégante. Cela ne semble convenir que pour les pages et les sites statiques.

Je pense que vous avez plusieurs options et que cela dépend vraiment des objectives que vous souhaitez atteindre, car chaque solution apporte des fonctionnalités / contrôles supplémentaires.

On pourrait utiliser NGINX et Apache, disposer des fichiers statiques du serveur NGINX pour votre application django et, si possible, créer un pont pour qu’il serve les fichiers joints à partir d’un document couchdb (pas sûr que ce soit possible). NGINX devrait également servir de proxy à la partie apache / django pour gérer la logique de l’application.

L’autre option serait d’utiliser un «couchapp» pour réellement servir le contenu de votre couchdb. Je pense que vous pouvez également configurer NGINX pour qu’il devienne un proxy devant le couchapp si vous avez besoin d’URL compatibles SEO.

Enfin, peut-être envisager de configurer une application nodejs en utilisant express. L’application nodejs donnerait des URL conviviales et comme il s’agit de javascript, cela pourrait mieux fonctionner avec couchdb qu’avec django / python.

Je suis de loin pas un expert dans le domaine, la plupart de mon expérience est nginx / apache et django, mais j’ai suivi couchdb pendant un certain temps et il fut un temps où tout le monde le garait derrière nginx pour des raisons de sécurité, mais je crois que ces problèmes ont été résolus … peut-être?

Je suis aussi aux sockets avec cette question. Cela semble une perte si le serveur Web intégré de CouchDb; celui qui sert Futon, ne peut pas être utilisé pour des applications sophistiquées.

Ce que j’ai découvert est le suivant:

Il est possible de placer des règles de réécriture dans CouchDb, comme expliqué ici: http://blog.couchbase.com/rewrites-and-virtual-hosting-introduction et on peut mapper des pages simples dans des URL web élégantes. Mais il me semble qu’un tel serveur ne servirait que des pages dans le cadre de la firebase database CouchDb basée sur des documents (c’est-à-dire des applications CRUD qui traitent les données dans le CouchDb).

Pour les situations qui requièrent une application CGI, je pense qu’il faudrait exécuter un autre serveur; disons sur un sous-domaine, en utilisant un serveur plus traditionnel tel qu’Apache, Ngnix, etc. Mais cela pourrait briser l’évolutivité. Ce serait bien si quelqu’un pouvait me montrer comment invoquer CGI depuis un CouchDb lui-même. Ce serait vraiment merveilleux