Sauvegarde et Restauration

Introduction

Pourquoi

Les fournisseurs d’hébergements mutualisés ne fournissent généralement pas de moyen automatisé de sauvegarder votre installation Elgg. Cet article propose une méthode permettant d’accomplir cette tâche.

Dans l’IT il existe souvent de nombreuses manières d’accomplir la même chose. Gardez cela à l’esprit. Cet article va expliquer une méthode pour sauvegarder et restaurer votre installation Elgg sur un hébergement mutualisé qui utilise l’application CPanel. Cependant, les idées présentées ici peuvent être ajustées pour d’autres applications également. Ce qui suit sont des situations typiques qui peuvent exiger une procédure telle que celle-ci :

  • Récupération après une catastrophe

  • Déplacer votre site Elgg vers un nouvel hôte

  • Dupliquer une installation

Quoi

Sujets couverts :

  • Des backups complets des répertoires de Elgg et des bases de données MySQL sont effectués tous les jours (automatisé)

  • Les backups sont envoyés sur autre emplacement hors-site via FTP (automatisé)

  • Les backups locaux sont supprimés après un transfert réussi vers le site distant (automatisé)

  • Cinq jours de backups seront conservés (automatisé)

  • Restauration des données sur le nouvel hôte (manuel)

Ce processus a été composé à partir d’articles d’assistance précédemment publiés dans le wiki de documentation de Elgg.

Hypothèses

Les hypothèses suivantes ont été faites :

  • Le répertoire du programme Elgg est /home/userx/public_html

  • Le répertoire des données de Elgg est /home/userx/elggdata

  • Vous avez créé un répertoire local pour vos backups à /home/userx/sitebackups

  • Vous disposez d’un server FTP distant auquel envoyer les fichiers de backup

  • Le répertoire dans lequel vous allez enregistrer les backups distants est /home/usery/sitebackups/

  • Vous allez restaurer le site chez un deuxième fournisseur d’hébergement mutualisé dans le répertoire /home/usery/public_html

Important

Assurez-vous de remplacer userx, usery, http://mynewdomain.com et tous les mots de passe par des valeurs qui correspondent à votre propre installation !

Créer un backup utilisable - automatiquement

Personnalisez le script de backup - sauvegarde automatique

Le script que vous allez utiliser peut être trouvé ici .

Copiez simplement le script dans un fichier texte et renommez le fichier avec une extension .pl. Vous pouvez utiliser n’importe quel éditeur de texte pour modifier le fichier.

Modifiez les valeurs suivantes pour qu’elles correspondent à votre structure de répertoires :

# ENTER THE PATH TO THE DIRECTORY YOU WANT TO BACKUP, NO TRAILING SLASH
$directory_to_backup = '/home/userx/public_html';
$directory_to_backup2 = '/home/userx/elggdata';
# ENTER THE PATH TO THE DIRECTORY YOU WISH TO SAVE THE BACKUP FILE TO, NO TRAILING SLASH
$backup_dest_dir = '/home/userx/sitebackups';

Modifiez les valeurs suivantes pour qu’elles correspondent à vos paramètres de base de données :

# MYSQL BACKUP PARAMETERS
$dbhost = 'localhost';
$dbuser = 'userx_elgg';
$dbpwd = 'dbpassword';
# ENTER DATABASE NAME
$database_names_elgg = 'userx_elgg';

Modifiez les valeurs suivantes pour qu’elles correspondent aux paramètres de votre serveur FTP distant :

# FTP PARAMETERS
$ftp_host = "FTP HOSTNAME/IP";
$ftp_user = "ftpuser";
$ftp_pwd = "ftppassword";
$ftp_dir = "/";

Enregistrez le fichier avec l’extension .pl (dans le cadre de cet article nous appellerons ce fichier : elgg-ftp-backup-script.pl) et chargez-le dans le répertoire /home/userx/sitebackups

Ayez conscience que vous pouvez désactiver le FTP et modifier un peu le script de sorte qu’il ne supprime pas le fichier de backup local dans le cas où vous ne voulez pas utiliser de stockage distant pour vos backups.

Configurez la tâche périodique cron de backup

Connectez-vous à votre application CPanel et cliquez sur le lien « Cron Jobs ». Dans le menu déroulant Paramètres communs - « Common Settings », choisissez une fois par jour - « Once a day » - et tapez ce qui suit dans le champ de commande /usr/bin/perl /home/userx/sitebackups/elgg-ftp-backup-script.pl

Cliquez sur le bouton d’ajout d’une nouvelle tâche cron « Add New Cron Job ». Des sauvegardes quotidiennes complètes sont désormais planifiées et seront transférées hors du site.

Configurez la tâche périodique Cron de nettoyage

Si vous envoyez vos sauvegardes, via FTP, à un autre hébergeur mutualisé qui utilise l’application CPanel ou si vous avez totalement désactivé FTP, vous pouvez configurer votre conservation des données comme suit.

Connectez-vous à votre application CPanel pour votre site FTP, ou localement si vous n’utilisez pas FTP, et cliquez sur le lien « Cron Jobs ». Dans le menu déroulant Paramètres communs - « Common Settings » choisissez une fois par jour - « Once a day » - et saisissez ce qui suit dans le champ de commande find /home/usery/sitebackups/full_* -mtime +4 -exec rm {} \;

Le paramètre -mtime X va définir le nombre de jours de rétention des sauvegardes. Tous les fichiers plus anciens que le nombre de jour x sera supprimé. Cliquez sur le bouton d’ajout d’une nouvelle tâche cron « Add New Cron Job ». Vous avez maintenant configuré la durée de rétention de vos sauvegardes.

Restauration depuis un backup

Préparez vos fichiers de backup

L’hypothèse est que vous restaurez votre site vers un autre prestataire d’hébergement mutualisé avec CPanel.

Lorsque le script a sauvegardé les fichiers, la structure originelle des répertoires est conservée dans le fichier zip. Nous devons faire un petit nettoyage. Effectuez ce qui suit :

  • Téléchargez le fichier de backup à partir duquel vous souhaitez effectuer la restauration

  • Décompressez le contenu du fichier de backup

  • Naviguez pour trouver la sauvegarde de votre site et la sauvegarde SQL. Extrayez les deux archives. Vous aurez alors :
    • un fichier de dump MySQL avec une extension « .sql »

    • une autre structure de répertoire avec pour contenu :
      • /home/userx/public_html

      • /home/userx/elggdata

  • Compressez le contenu du répertoire /home/userx/public_html sous forme de fichier zip de sorte que les fichiers soient à la racine du fichier zip
    • La raison de cette démarche est simple. Il est beaucoup plus efficace de télécharger un seul fichier zip que d’envoyer par FTP sur votre nouvel hôte tout le contenu du répertoire / home/userx/public_html.

  • Compressez le contenu du répertoire /home/userx/elggdata sous forme de fichier zip de sorte que les fichiers soient à la racine du fichier zip

Vous devriez maintenant avoir les fichiers suivants :

  • le fichier .sql

  • le fichier zip avec le contenu de /home/userx/public_html à la racine

  • le fichier zip avec le contenu de /home/userx/elggdata` à la racine

Restaurez les fichiers

Ceci est écrit dans l’hypothèse que vous restaurez vers un hébergement différent mais conservez la même structure de répertoires. Faites comme suit :

  • Connectez-vous à l’application CPanel de l’hébergement sur lequel vous souhaitez restaurer le site et ouvrez le gestionnaire de fichiers - « File Manager ».

  • Naviguez vers /home/usery/public_html
    • Chargez le fichier zip qui contient les fichiers de /home/userx/public_html

    • Décompressez le fichier zip

      Vous devriez maintenant voir tous les fichiers dans /home/usery/public_html

    • Supprimez le fichier zip

  • Naviguez vers /home/usery/elggdata
    • Chargez le fichier zip qui contient les fichiers de /home/userx/elggdata

    • Décompressez le fichier zip

      Vous devriez maintenant voir tous les fichiers dans /home/usery/elggdata

    • Supprimez le fichier zip

La restauration des fichiers du programme et des données est terminée

Restaurez la base de données MySQL

Note

A nouveau, l’hypothèse ici est que vous restaurez votre installation Elgg vers un second fournisseur d’hébergement mutualisé. Chaque fournisseur d’hébergement mutualisé préfixe avec le nom du compte du détenteur les bases de données associées à ce compte. Par exemple, l’identifiant de notre premier hébergement est userx de sorte que l’hébergeur va ajouter le préfixe userx_ pour nous donner un nom de base de données de userx_elgg. Quand nous restaurons vers notre second fournisseur d’hébergement mutualisé nous le faisons avec un identfiant de usery de sorte que le nom de notre base de données sera usery_elgg. Les fournisseurs d’hébergement ne vous permettent pas de modifier ce comportement. De sorte que le processus ici n’est pas aussi simple que simplement restaurer la base de données depuis le backup vers le compte usery. Néanmoins, une fois ceci dit, ce n’est pas si difficile non plus.

Modifiez le backup MySQL

Ouvrez le fichier``.sql`` que vous avez extrait de votre backup dans votre éditeur de texte favori. Commentez les lignes suivantes avec un dièse :

#CREATE DATABASE /*!32312 IF NOT EXISTS*/ `userx_elgg` /*!40100 DEFAULT CHARACTER SET latin1 */;
#USE `userx_elgg`;

Enregistrez le fichier.

Créez la nouvelle base de données

Effectuez les actions suivantes :

  • Connectez-vous à l’application CPanel du nouvel hôte et cliquez sur l’icône « Bases de données MySQL - « MySQL Databases »
    • Renseignez le nom de la base de données et cliquez sur le bouton créer - « create ». Pour notre exemple, nous allons conserver elgg ce qui nous donne pour nom de base de données usery_elgg

    • Vous pouvez associer un utilisateur existant à la nouvelle base de données, ou pour créer un nouvel utilisateur vous aurez besoin de :
      • Allez dans la section « Ajouter Nouvel utilisateur » de la page « Bases de données MySQL »

      • Saisissez l’identifiant et le mot de passe. Pour notre exemple nous allons rester simples et utiliser à nouveau elgg. Ce qui va nous donner un identifiant usery_elgg

    • Associez le nouvel utilisateur avec la nouvelle base de données
      • Allez dans la section Ajouter un nouvel utilisateur à la base de données - « Add User To Database » - de la page des Bases de données MySQL - « MySQL Databases ». Ajoutez l’utilisateur usery_elgg à la base de données usery_elgg

      • Sélectionnez « Tous les Privilèges » - « All Privileges » - et cliquez sur le bouton « Effectuer les changements » - « Make Changes »

Restaurez la base de données de production

Maintenant il est temps de restaurer le fichier de backup MySQL en l’important dans notre nouvelle base de données nommée « usery_elgg ».

  • Connectez-vous à l’application CPanel du nouvel hôte et cliquez sur l“« icône phpMyAdmin
    • Choisissez la base de données usery_elgg dans la colonne de gauche

    • Cliquez sur l’onglet « import » en haut de la page

    • Naviguez jusqu’au backup .sql dans votre arborescence locale et sélectionnez-le

    • Cliquez sur le bouton « Go » en bas à droite de la page

Vous devriez maintenant voir un message indiquant que l’opération a réussi

Combiner le tout

L’installation elgg restaurée ne connaît rien du nom de la nouvelle base de données, de l’identifiant, de la structure des répertoires, etc. C’est ce que nous allons aborder ici.

Modifiez /public_html/elgg-config/settings.php sur le nouvel hébergement pour reproduire les informations de la base de données que vous venez de créer.

// Database username
$CONFIG->dbuser = 'usery_elgg';

// Database password
$CONFIG->dbpass = 'dbpassword';

// Database name
$CONFIG->dbname = 'usery_elgg';

// Database server
// (For most configurations, you can leave this as 'localhost')
$CONFIG->dbhost = 'localhost';

// (For most configurations, you can leave this as 3306)
$CONFIG->dbport = 3306;

$CONFIG->wwwroot = 'http://your.website.com/'

Téléchargez le fichier settings.php vers le nouvel hôte - en remplaçant le fichier existant.

Ouvrez l’outil phpMyAdmin sur le nouvel hôte depuis CPanel. Sélectionnez la base de données usery_elgg sur la gauche, et cliquez sur l’onglet SQL en haut de la page. Exécutez les requêtes SQL suivantes sur la base de données usery_elgg :

Modifiez le chemin d’installation

UPDATE `elgg_config` SET `value` = REPLACE(`value`, "/home/userx/public_html/grid/", "/home/usery/public_html/grid/") WHERE `name` = "path";

Modifiez le répertoire des données

UPDATE `elgg_config` SET `value` = REPLACE(`value`, "/home/userx/elggdata/", "/home/usery/elggdata/") WHERE `name` = "dataroot";

Modifiez le répertoire des données de stockage des fichiers

UPDATE elgg_metadata set value = '/home/usery/elggdata/' WHERE name = 'filestore::dir_root';

Finaliser la nouvelle installation

Exécutez le script de mise à niveau en visitant l’URL suivante : http://mynewdomain.com/upgrade.php . Effectuez cette étape deux fois - depuis le début.

Mettez à jour vos enregistrements DNS de sorte que votre nom d’hôte se résolve toujours vers l’adresse IP du nouvel hôte si c’est un déplacement permanent.

Félicitations !

Si vous avez suivi les étapes soulignées ici vous devriez maintenant avoir une copie totalement fonctionnelle de votre installation Elgg d’origine.