Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Déploiement d'un projet Django

Déploiement d'un projet Django

Avatar for Gregory Favre

Gregory Favre

February 11, 2011
Tweet

More Decks by Gregory Favre

Other Decks in Programming

Transcript

  1. load balancer / proxy Production server Database Failover server slave

    Staging / Dev Staging / Dev + + Problématique mardi, 28 février 12
  2. La bonne librairie? • untar; configure; make; make install est

    hors de question • yum ou apt sont désespérément pauvres • easy_install ne gère pas les versions multiples • PIP = Pip Installs Packages • installe depuis PyPi mais également depuis les fichiers setup.py • permet l’isolation des dépendances mardi, 28 février 12
  3. Isolation • Virtualenv crée sa propre arborescence de python. •

    Un site = un environnement; PIP installe les dépendances dans cette arborescence. • Simple à installer, mettre en œuvre et tester: $ virtualenv /path/to/env $ pip install django -E /path/to/env $ source /path/to/env/bin/activate (env)$ python >>> from django import VERSION; print VERSION (1, 2, 4, ‘final’, 0) mardi, 28 février 12
  4. Scalabilité? • Que se passe-t-il si: • un nouveau développeur

    doit commencer à travailler? • un serveur doit être ajouté? • une librairie doit être mise à jour sur 4 serveurs? mardi, 28 février 12
  5. Bonnes et mauvaises pratiques • SSH est la racine de

    tous les maux (après sudo) • Documenter est pénible; utiliser/écrire une recette est: • efficace • répétable • amusant • à jour. mardi, 28 février 12
  6. Fabric • Recettes simples à écrire, en python • Traite

    identiquement le déploiement local ou distant sur une ou plusieurs machines • Ne gère pas la configuration des machines • préférer Puppet ou Chef $ fab production maintenance_up $ fab production checkout_latest $ fab production maintenance_down mardi, 28 février 12
  7. Prévenir plutôt que guérir • Séparer les tiers: • apache

    + mod_wsgi pour l’applicatif • base de données aux premiers signes de faiblesse • contenu statique • django 1.3 (fin février 2011) ou django-staticfiles • nginx ou lighttpd pour servir ces fichiers mardi, 28 février 12
  8. Pour aller plus loin • Exemple de projet de déploiement

    (fabric + pip + wsgi): https://svn.epfl.ch/svn/django-tools/branches/stable/ deployment • Workshop de Jacob Kaplan-Moss http://github.com/jacobian/django-deployment-workshop mardi, 28 février 12