5. Mises à jour#

À faire

On pourrait sans doute faire un script (shell ou python) avec cette procédure, avec retour automatique à la sauvegarde si tout ne se passe pas bien… Ce serait, en plus, plus rapide (probablement moins d’une minute).

Note

Il est (très) prudent de faire cette procédure sur l’instance de test avant de la lancer sur l’instance de production…

5.1. Informer les utilisateurs#

Ou au moins choisir un créneau de très faible utilisation de l’instance

5.2. Arrêter l’instance#

Cela se fait par l’arrêt du service gunicorn via supervisor

5.3. Activer l’environnement virtuel adéquat#

Aller dans le dossier de l’instance et lancer la commande :

poetry shell

5.4. Faire une sauvegarde des données#

  • Les données de la base

à partir de la version 0.13 :

> python manage.py backup

Versions antérieures à 0.13 :

Si the_file_name est le nom de la sauvegarde :

> python manage.py dumpdata -a --natural-foreign -e assetplusconnect -e extable -e admin.Logentry -e contenttypes -e sessions -e auth.Permission -o ~/the_file_name.json.bz2
  • Les fichiers media

Uniquement si c’est nécessaire

  • La configuration locale (dossier /locale)

Uniquement si c’est nécessaire

Note

Dans la grande majorité des cas, la mise à jour ne concerne que le code et la structure de la base de données. La sauvegarde spéciquement à ce moment des fichiers de /media et de /local est à l’appréciation de chacun. D’autant plus que pour /media, le volume de données peut être très important. Dans tous les cas, pour ce dossier, il est conseillé un système de sauvegarde différentiel ou incrémentiel.

5.5. Installer le nouveau code#

Si #.#.# est le nom du tag de la version à installer (0.8.1 par exemple) :

> git checkout #.#.#

5.6. Faire la mise à jour des dépendances#

> poetry install --no-root -E ldap

5.7. Lancer les migrations#

> python manage.py migrate

5.8. Installer les fichiers statiques#

> python manage.py collectstatic

5.9. Relancer l’instance#

5.10. Informer les utilisateurs#

  • Que le serveur est relancé

  • Quelles sont les (principales) nouveautés

À faire

  • Sans doute faire une information différente suivant le type d’utilisateur (ses rôles) ?

  • Intégrer cela à l’interface (box d’info à la connexion) ?