Sauvegarder et restaurer un site Django

Des données peuvent et seront perdues. Dans ce tutoriel, on va sauvegarder et restaurer les données de notre site Django / Wagtail.

16 Juillet 2020 15:00
Thèmes: Déploiement

La sauvegarde ne devrait nécessiter aucune justification: il est essentiel de préserver non seulement le contenu de votre site mais également les informations des utilisateurs. Dans ce tutoriel, on va sauvegarder le contenu de notre site, y compris tous les fichiers multimédias avec le package dbbackup et le restaurer dans un environnement vide.

Dans ce tutoriel, on effectuera une sauvegarde de notre environnement de production. Vous pouvez suivre les mêmes étapes pour sauvegarder votre environnement de développement; c'est une bonne idée d'essayer le processus avant de l'exécuter sur un environnement de serveur en direct. Sur votre ordinateur de développement, activez votre environnement virtuel et installez dbbackup:

pip3 install django-dbbackup

Ajoutez-le à votre fichier requirements.txt et ajoutez l'application à vos INSTALLED_APPS:

'dbbackup',
DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage'
DBBACKUP_STORAGE_OPTIONS = {'location': os.path.join(BASE_DIR, '../backups')}

Le premier paramètre pointe vers la classe que Django utilise pour implémenter le stockage de fichiers. Le deuxième paramètre définit l'emplacement des sauvegardes. Vous pouvez utiliser n'importe quel chemin que vous aimez; le paramètre ci-dessus place les sauvegardes dans un répertoire au même niveau que le projet. Créez ce répertoire /backups. Il n'est pas nécessaire de migrer la base de données. Poussez les modifications dans votre référentiel, accédez au serveur, activez votre environnement virtuel là-bas et extrayez les modifications du référentiel. Créez également le répertoire /backups sur votre serveur. Installez le package, soit avec la même commande que ci-dessus, soit avec

pip3 install -r requirements.txt
python3 manage.py dbbackup
python3 manage.py mediabackup

Vous devriez maintenant voir deux nouveaux fichiers avec les sauvegardes dans le répertoire /backups.

Avec ces fichiers, on peut restaurer dans la base de données existante (celle qu'on a sauvegardée) ou dans une autre, soit sur notre ordinateur de développement ou sur notre serveur de production. Si vous effectuez une restauration dans un nouvel environnement, dbbackup doit évidemment y être également installé et l'emplacement des sauvegardes doit être correctement défini. La copie des fichiers de sauvegarde du serveur distant vers le répertoire courant peut être effectuée avec la commande scp:

scp usr_pet@165.22.199.4:/home/usr_pet/backups/\* .

usr_pet est l'utilisateur autorisé pour le projet avec le répertoire personnel /home/usr_pet et l'adresse IP est l'adresse de votre serveur. La barre oblique inverse sert ici de caractère d'échappement et n'est nécessaire qu'avec zsh.

Pour restaurer dans un nouvel environnement:

  • assurez-vous que la version de PostgreSQL est la même que sur le serveur. Vous pouvez vérifier la version à l'invite psql avec: SELECT version(); Sinon, installez la bonne version (par exemple sur Mac avec Homebrew) et démarrez-la. Vous devez ensuite d'abord créer un utilisateur de base de données (voir le premier tutoriel).
  • créez une base de données de sauvegarde à l'invite psql: CREATE DATABASE db_pet_backup OWNER usr_pet;
  • créez un répertoire: mkdir pet_backup && cd pet_backup
  • y créez un environnement virtuel: python3 -m venv env && source env / bin / activate
  • clonez le référentiel: git clone https://github.com/prijme/pet.git
  • entrez dans le répertoire du projet et installez toutes les exigences: pip3 install -r requirements.txt
  • créez un fichier de paramètres local.py avec tous les mots de passe nécessaires (ou le copier depuis le serveur); assurez-vous que le nom de la base de données est db_pet_backup
  • migrez la base de données: python3 manage.py migrate

Vous avez maintenant un site vide. Placez le répertoire /backups avec les fichiers de sauvegarde au même niveau que le répertoire du projet. Restaurez les données et les médias avec:

python3 manage.py dbrestore
python3 manage.py mediarestore

Cela termine la restauration. Il y a beaucoup d'autres choses qu'on peut ajouter à notre site, laissez un commentaire si vous avez des suggestions!

Commentez cet article (connectez-vous d'abord ou confirmez par nom et email ci-dessous)