Sommaire
Cette page a pour but de donner des conseils et bonnes pratiques aux développeurs pour améliorer la qualité des productions.
Orientation industrialisation
Cette partie reflète les idées pour monter en compétences en terme de développement et de déploiement.
Ce sont juste des idées à ce stade, elles ne sont pas forcément bonnes à prendre, mais il bon d'en garder la trace de ces réflexions
- Créer une recette buildout spéciale AUF pour bootstraper les projets AUF Django
- définir les settings propre AUF ADIMIN_URL, WSGI, proposer les pages template par défaut
- Incorporer systématiquement certains eggs
- django-admin-tools
- south
- Générer automatiquement le fichier de conf vhost pour Apache par buildout
- Standardiser les procédures de déploiements
- Penser à une politique de release des modules AUF en parallèle avec le code source
- (Re)penser à la façon technique de promouvoir les données de référence de manière centralisée
- Créer une application skin AUF pour fournir une charte graphique de base pour les frontend AUF
Trousse à outils du développeur
PDB
Le debuggeur Python pdb avec sa version amélioré ipdb reposant sur ipython
Installation de ipython
Avant de l'installer, s'assurer que vous êtes bien dans un environnement virtuel virtualenv
easy_install ipython
Pour invoquer le déboggeur, mettre un point d'arrêt dans le code :
import pdb; pdb.set_trace()
Lorsque que le serveur est lancé en mode standalone, le debugger vous invite à taper une commande help est un bon début
Django Debug ToolBar
La Django Debug toolbar greffe un outil web visuel au projet pour explorer les templates, requêtes SQL utilisées pour construire la page.
Je vous donne ici ma façon de l'incorporer à un projet, pour qu'il soit automatiquement disponible en développement sans pour autant polluer la version déployée
buildout.cfg
[buildout] ... eggs = ... [django] ... eggs = ${buildout:eggs} ...
devel.cfg
[buildout] extends=buildout.cfg [django] wsgi=false settings=development eggs = ${buildout:eggs} django-debug-toolbar
development.py
Ajout de ces 3 lignes au fichier :
INTERNAL_IPS = ('127.0.0.1',) MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',) INSTALLED_APPS += ('debug_toolbar',)
Framework de migration
L'avantage consiste à maitriser et à historiser les migrations de structures de données, et de données elles-mêmes.
Le framework propose des outils intégrer à Django pour gérér les migrations, mais aussi des outils pour générer certaines migrations constatées sur les modèles de données.
Environnement de Tests
La phase de développement se fait généralement en mode devel.cfg soit avec les flags debugs activés et le serveur web statique de django de démarré.
Pour déployer en test (ou en prod), le buildout génère un WSGI en vue de pouvoir câbler notre application avec le serveur Web Apache2.
Il peut être bon de tester et valider l'application dans ce mode de fonctionnement.
- Installer le serveur Apache2
sudo apt-get install apache2
- Configurer Apache2
Si vous souhaitez câbler une application déployée sous votre home, vous devez définir le user qui doit lancer Apache, autrement, le montage NFS interdira à Apache d'accéder à cette partie du système de fichier.
Editer le fichier /etc/apache2/apache2.conf
# These need to be set in /etc/apache2/envvars User olivier.larcheveque Group ${APACHE_RUN_GROUP}
- Installer le module WSGI
sudo apt-get install libapache2-mod-wsgi
- Activer le module WSGI
sudo a2enmod wsgi
- Créer un vhost
Ajouter un fichier avec en le nommant avec le nom de domaine souhaité (dans cet exemple projets-p4)
sudo touch /etc/apache2/sites-available/projets-p4
Contenu de ce fichier
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName projets-p4 Alias /media/ /net/nfs-authnss.b.ca.auf/home/olivier.larcheveque/Projets/auf_projets/auf_projets/media/ Alias /admin_media/ /net/nfs-authnss.b.ca.auf/home/olivier.larcheveque/Projets/auf_projets/parts/django/django/contrib/admin/media/ <Directory /net/nfs-authnss.b.ca.auf/home/olivier.larcheveque/Projets/auf_projets/auf_projets/media> Order deny,allow Allow from all </Directory> WSGIScriptAlias / /net/nfs-authnss.b.ca.auf/home/olivier.larcheveque/Projets/auf_projets/bin/django.wsgi <Directory /net/nfs-authnss.b.ca.auf/home/olivier.larcheveque/Projets/auf_projets/auf_projets> Order deny,allow Allow from all </Directory> ErrorLog /var/log/apache2/projets-p4.log </VirtualHost>
- Ajouter une entrée dans le fichier hosts
Pour qu'apache soit en mesure d'asocier ce vhost (avec le serverName définit, ici projets-p4), à une url http://projets-p4, il déclarer notre machine locale comme étant projets-p4.
Exemple de contenu de mon fichier hosts
127.0.0.1 localhost 127.0.1.1 u-ol 127.0.0.1 db.local 127.0.0.1 projets-p4 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
- Activer le vhost
sudo a2ensite projets-p4
- Redémarrer Apache2
sudo /eic/init.d/apache2 restart