66 votes

Comment utilisez-vous le pep, virtualenv et du Tissu pour gérer le déploiement?

Quelles sont vos préférences, vos astuces, et par-dessus tout, votre méthode de travail?

Ces outils sont très bien, mais il y a pas encore de meilleures pratiques attachées à leur utilisation, donc je ne sais pas quel est le moyen le plus efficace de les utiliser.

  • Utilisez-vous des pip faisceaux ou de toujours télécharger?
  • Avez-vous mis en place Apache/Cherokee/MySQL à la main ou faire vous avez un script pour qui?
  • Ne vous mettez tout dans virtualenv et utiliser --no-site-packages?
  • Utilisez-vous un virtualenv pour plusieurs projets?
  • Qu'utilisez-vous de Tissu pour (une partie de votre déploiement ne vous script)?
  • Ne vous mettez votre Tissu scripts sur le client ou le serveur?
  • Comment avez-vous gérer la base de données et le fichier multimédia de la migration?
  • Vous avez besoin d'un outil de construction tels que SCons?
  • Quelles sont les étapes de votre déploiement? À quelle fréquence effectuez-vous chaque d'entre eux?
  • etc.

79voto

Carl Meyer Points 30736

Les "meilleures pratiques" sont très dépendantes du contexte, de sorte que je ne prétend pas que mes pratiques sont les meilleurs, juste qu'ils travaillent pour moi. Je travaille principalement sur les petits sites, donc pas de multiples déploiements de serveurs, de réseaux de diffusion de contenu, etc. J'ai besoin de soutien Webfaction d'hébergement partagé de déploiement, comme certains clients ont besoin le moins cher d'hébergement qu'ils peuvent trouver. Je fais souvent avoir à déployer des sites à plusieurs reprises dans des environnements différents, de manière reproductible script déploie sont essentiels.

  • Je n'utilise pas de pip bundles, j'ai installer à partir d'une requirements.txt. Je fais mon propre chishop serveur avec sdists de tout ce dont j'ai besoin, donc il n'y a pas de multiples points de défaillance unique dans le processus de construction. J'utilise aussi PIP_DOWNLOAD_CACHE sur mes machines de développement pour accélérer l'amorçage des environnements de projet, puisque la plupart de mes projets les exigences de chevaucher un peu.
  • J'ai le Tissu des scripts qui peut automatiquement configurer nginx + Apache/mod_wsgi sur une Ubuntu VPS, ou configurer l'équivalent sur Webfaction d'hébergement partagé, puis déployer le projet.
  • Je n'utilisez pas l'option --no-site-packages avec virtualenv, parce que je préfère avoir à déplacement lent des paquets construits (Python Imaging Library, psycopg2) installé au niveau du système; trop lente et pénible à faire à l'intérieur de chaque virtualenv. Je n'ai pas eu d'ennuis avec système pollué site-packages, car en général je n'ai pas le polluer. Et dans tous les cas, vous pouvez installer une version différente de quelque chose dans le virtualenv et il aura la priorité.
  • Chaque projet a son propre virtualenv. J'ai quelques scripts bash (pas virtualenvwrapper, même si beaucoup de gens l'utiliser et de l'amour) qui permettent d'automatiser le déploiement de la virtualenv pour un projet donné à un emplacement connu et l'installation de ce projet sur les exigences en elle.
  • L'ensemble du processus de déploiement, à partir d'un nu Ubuntu serveur VPS ou Webfaction compte d'hébergement partagé pour l'exécution d'un site web, est codée à l'aide de Tissu.
  • Tissu scripts font partie de la source du projet de l'arbre, et je les exécuter à partir d'un local de développement de la caisse.
  • Je n'ai pas besoin de SCons (que je connais).

Déploiement

Actuellement, les frais de déploiement est divisé en les étapes suivantes:

  • fab staging bootstrap (et de configuration de serveur code initial déployer)
  • fab staging enable (activer Apache/nginx config pour ce site)
  • fab staging reload_server (reload Apache/nginx config).

Ceux-ci peuvent bien sûr être combinées en une seule ligne de commande fab staging bootstrap enable reload_server.

Une fois ces étapes effectuées, le déploiement de la mise à jour avec le nouveau code est juste fab staging deploy.

Si j'ai besoin de revenir un jour, fab staging rollback. Rien de magique dans la restauration; simplement, il restaure le code de la dernière version déployée et migre la base de données à l'état précédent (ce qui exige l'enregistrement des métadonnées à propos de la migration de l'état de la bd post-déploiement, je viens de le faire dans un fichier texte).

Exemples

Je n'ai pas utilisé le Tissu scripts décrits dans cette réponse, depuis quelques années, de sorte qu'ils ne sont pas maintenus à tous et je déclinons la responsabilité de leur qualité :-) Mais vous pouvez les voir à https://bitbucket.org/carljm/django-project-template - en fabfile.py dans les pensions de racine, et dans l' deploy/ sous-répertoire.

9voto

Rodrigue Points 1576

J'utilise le tissu pour créer et déployer mon code et supposons un système déjà mis en place pour cela. Je pense qu'un outil comme la marionnette est plus approprié pour automatiser l'installation de choses comme apache et mysql, mais je n'ai pas encore vraiment l'inclure dans mon flux de travail.

Aussi, j'ai habituellement un autre virtualenv par projet. Ils sont créés à partir d'une "base" install de python où - comme Carl souligné - vous pouvez laisser certaines bibliothèques python.

Donc, en termes de flux de travail qui serait:

  1. marionnette pour installer les services requis (serveur web, base de données, serveur ssh, ...)
  2. de marionnettes pour configurer les utilisateurs et les dossiers de
  3. tissu pour créer virtualenv pour l'application
  4. tissu pip installer à partir d'requirements.txt
  5. tissu pour déployer votre application
  6. tissu pour déployer les fichiers de configuration (serveur web, ...)

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