Table des matières
Ceci est une ancienne révision du document !
Site web
Technologie utilisée : django-cms
Instances fonctionnelles (encore en dev) :
- http://django.faimaison.net [methyl]
- http://django2.faimaison.net [zorun]
Code : dépôt « site-django » sur le serveur git.
TODO avant mise en production
Instance sur http://django2.faimaison.net pour le moment.
- Finir la page « Accès Internet » avec notamment les jolis schémas que thy avait fait passer : http://django2.faimaison.net/acces-internet/ [thy ?] → Ok pour le moment
- Faire tout relire par les membres (coquilles, liens morts, problèmes de CSS)
- Mettre en place les backups des données (« media/… ») ainsi que de la base de données postgresql [zorun] → DONE
- Mettre en place une deuxième instance propre (avec virtualenv et tout, cf README) chez methyl [methyl] → Quasiment terminé (reste bdd à importer)
- Synchroniser les données (« media/… ») et éventuellement la base de données entre les deux instances (unison ?) [zorun & methyl] → DONE
- Rajouter la config de lighty dans le dépôt git [methyl ou cthuluh]
- Repérer les liens qui pointent vers l'ancien site et qui seront cassés par la mise en prod :
- Tester la tenue face à la charge (base de données qui tient la route, etc) à grands coups de curl/whatever
- Changer la conf du DNS (faimaison.net et www.faimaison.net)
Dump de la base de données
On se place dans le cas d'une base de données postgresql, avec un utilisateur postgresql nommé « django » et une base nommée « faimaison » :
pg_dump -U django -f faimaison-ddmmyyy.pgsql -C -F c -Z 5 -E UTF8 faimaison
option | description |
---|---|
-U <nom> | nom de l'utilisateur qui se connecte sur la base |
-f <fichier> | exporter dans un fichier externe |
-C | dans le dump, inclure requete pour créer la base de donnée |
-F <option> | permet de choisir le format d'export ( içi c'est custom qui est un format compressé destiné à être utilisé avec pg_restore) |
-Z <niveau_compression> | niveau de compression (entre 0-9) |
-E <encodage> | préciser l'encodage des données quand elle seront dans le dump |
Importation de la base de données
TODO
Migration de sqlite à postgresql
C'est pas aussi simple que prévu… Voici une méthode qui marche (inspiration : http://reinout.vanrees.org/weblog/2011/05/12/sqlite-postgres-django-cms-migrations.html)
- export de la base de données sqlite. L'astuce est d'utiliser l'option –natural pour avoir moins de problèmes avec les ID uniques qui se retrouvent en double :
python2 manage.py dumpdata --indent=2 --natural > dump-db.json
- création de la base de données postgresql (on l'appelle « faimaison » et elle appartient à l'utilisateur « django ») :
$ createuser -P django $ createdb -U django faimaison
- configuration de django pour utiliser postgresql (dans local_settings.py)
- création des tables de base :
python2 manage.py syncdb
- création des tables spécifiques à django-cms :
python2 manage.py migrate
- virer les tables qui ne servent à rien (on va les réimporter et ça fait des conflits) :
$ python2 manage.py dbshell faimaison=> TRUNCATE django_content_type CASCADE;
À ce stade, si on essaie d'importer le dump JSON, il reste un problème avec les placeholders…
- séparer le fichier JSON en deux fichiers… un avec la liste des placeholders, un sans (oui, c'est chiant, il faut le faire à la main^W^W^Wavec emacs) cf. plus bas pour une autre méthode (non testée)
- importer les placeholders, puis le reste :
python2 manage.py loaddata dump-db-with-placeholders.json python2 manage.py loaddata dump-db-without-placeholders.json
Autre méthode à essayer, plutôt que de séparer à la main :
python2 manage.py dumpdata --indent 2 --natural --exclude cms.placeholder > dump-db-without-placeholders.json python2 manage.py dumpdata --indent 2 --natural cms.placeholder > dump-db-with-placeholders.json
puis importer ça avec postgresql.
Et voilà, normalement, ça marche :)