Migration de Moodle
Parfois, il est nécessaire de déplacer un site Moodle d'un serveur à un autre. Par exemple, pour déplacer un site Moodle de votre machine vers un serveur dédié.
Avertissement ! Le simple fait de modifier l'URL d'accès d'un site Moodle (par exemple en passant à https) correspond à une migration ! Il faudra impérativement modifier les informations du Fichier de configuration (notamment la valeur de $CFG->wwwroot) et procéder à une modification de l'URL dans la base de données. |
Une plateforme Moodle est constituée de 3 éléments qui devront être déplacés ou recopiés :
- le code de Moodle (les fichiers PHP, JS, CSS,...) ;
- le contenu de la base de données stocké dans une autre application type MySQL, PostgreSQL,... ;
- et le dossier Moodledata !
Sans l'un de ces 3 éléments, la plateforme ne sera pas complète. Il faudra ajuster certaines valeurs dans config.php pour indiquer tout ce qui a changé entre le serveur 1 et le serveur 2 (adresse Internet, dossiers moodledata,...). Notez qu'il pourra être nécessaire de transformer certaines valeurs en base de données pour les liens qui seraient brisés. Pour une migration réussie, suivez les instructions ci-dessous...
Migrer un site Moodle complet – méthode 1
Il s'agit ici de migrer un site Moodle complet d'un serveur vers un autre. Si vous changez de domaine ou d'adresse IP pour votre nouveau serveur, vous devrez suivre les étapes suivantes :
- Mode de maintenance : placez votre site Moodle actuel en mode de maintenance pour empêcher toute modification dans la base de données. Ne laissez pas les administrateurs se connecter durant la migration, car ils ne sont pas affectés par le mode de maintenance.
- Sauvegarde de la base de données : sauvegardez votre base de donnée Moodle en suivant les instructions de la page de mise à jour. Cela vous donnera un fichier texte contenant l'export mysql.
- Importation de la base de données : importez ces données sur le nouveau serveur. En cas de changement dans le nom de la base, de l'utilisateur ou du mot de passe,... pensez à adapter les paramètres du fichier config.php ($CFG->dbtype, $CFG->dblibrary, $CFG->dbhost, $CFG->dbname, $CFG->dbuser, $CFG->dbpass, $CFG->prefix et/ou $CFG->dboptions).
- Copie du code source Moodle : copiez le code de Moodle vers le nouveau serveur - profitez-en éventuellement pour faire une mise à jour à la dernière version.
- Modification de
$CFG->wwwroot
: dans votre dossier Moodle, modifiez la variable$CFG->wwwroot
dans le fichier config.php pour votre nouveau serveur. - Copie du dossier de données (moodledata) : déposez le contenu de votre dossier de données (vérifiez en la valeur dans
$CFG->dataroot
) sur le nouveau serveur. - Vérification des permissions : vérifiez que les permissions sur les fichiers restent les mêmes dans le nouveau dossier, et modifiez la valeur dans le fichier config.php si vous avez changé l'emplacement sur le nouveau serveur.
- Changement de l'URL du site Moodle : si votre site a une nouvelle URL, il est nécessaire de substituer dans la base de données l'adresse de votre ancien site par la nouvelle. Ceci est rendu indispensable par le fait que les liens vers les images, les fichiers, etc. sont enregistrés en tant que liens absolus, reposants donc sur la valeur issue de
$CFG->wwwroot
de votre ancien site. De sorte qu'en déposant la copie de votre base de données de l'ancien site vers le nouveau, les liens seront brisés. Ceci peut être aisément résolu de deux manières différentes :
- a) la première méthode a recourt au script replace.php. Après avoir déposé et mis en place la base de données sur le nouveau serveur, allez avec votre navigateur internet vers l'adresse http://[nom-de-votre-propre-serveur.com]/admin/tool/replace/index.php
- Saisissez l'URL de votre ancien serveur (http://ancienserveur.com/) et celle de votre nouveau serveur (http://nouveauserveur.com/) et cela corrigera les tables mysql. Vous devrez également réinitialiser les liens mis en cache en redémarrant votre serveur web.
- b) La deuxième méthode utilise la fonction rechercher/remplacer d'un simple éditeur de texte afin de substituer à l'ancienne URL la nouvelle adresse dans la sauvegarde de votre ancienne base de données, avant de déposer cette sauvegarde modifiée dans la base de votre nouveau site. Par exemple, avec sed :
sed -e 's/ancienserveur.com/nouveauserveur.com/g' oldmysqldump.sql > newmysqldump.sql
- Nota : cette méthode ne remplace pas les URLs dans les blocs, car ils y sont stockés en forme base64 et ne peuvent donc pas être détectés.
- Astuce : pensez à consulter le fichier sql de votre ancienne base de données afin d'y vérifier comment était référencée l'URL de votre ancien site.
- Astuce : si la restauration du fichier de la base de données ne se termine pas correctement, à cause des timeout liés à un trop gros fichier, vous pouvez utiliser le script BigDump, disponible à l'adresse : http://www.ozerov.de/bigdump.php
- Test de la migration : pour tester votre nouvelle installation, accédez à Moodle avec votre navigateur internet, à l'adresse du nouveau serveur. Lorsque vous avez vérifié qu'un certain nombre de liens dans les cours fonctionnent correctement, désactivez le mode de maintenance.
Migrer un site Moodle complet – méthode 2
Vous avez accès en ligne de commande sur les deux serveurs ? Dans ce cas, la méthode ci-dessous est très rapide et efficiente pour migrer un site Moodle.
Elle est également utile pour créer des « instantanés » d'une installation Moodle.
- Configurer une base de données vide sur le « nouveau » serveur.
- Mettre votre site Moodle existant en mode de maintenance.
- Se connecter en ligne de commande sur le serveur du Moodle existant.
- Utiliser rsync pour copier le dossier moodledata et le dossier contenant l'installation de Moodle (par exemple public_html ou htdocs) vers le nouveau serveur. Lancer pour cela la commande suivante (en remplaçant les termes en majuscules par vos propres données ; SOURCE = le dossier que vous voulez copier), pour les deux dossiers :
rsync -av -e ssh SOURCE/ USERNAME@NEW_SERVER.COM:/PATH/TO/DESTINATION/
- Exporter la base de données existante, en lançant :
mysqldump --allow-keywords --opt -uMySQL_USERNAME -pPASSWORD DATABASE | ssh USER@DOMAIN "mysql -uMySQL_USERNAME -pPASSWORD DATABASE"
- Copier le fichier exporté sur le nouveau serveur, et l'importer dans la base de données créée.
- Sur le nouveau serveur, modifier le fichier config.php avec les informations adéquates.
- Afin de corriger les liens internes à Moodle, se connecter au Moodle sur le nouveau serveur en tant qu'administrateur et utiliser l'outil de recherche et de remplacement pour remplacer l'ancienne URL par la nouvelle.
- Vérifier que tout fonctionne correctement.
Le tout prend environ 15 minutes.
Une fois tout ceci terminé, il reste à configurer l'éventuelle redirection DNS, quitter le mode de maintenance du nouveau site et d'éteindre l'ancien.
Autres éléments à prendre en considération
Gagner du temps en ne sauvegardant que le nécessaire
Lorsque vous sauvegardez (ou copiez) le dossier de données (moodledata), vous pouvez omettre certains dossiers pour gagner du temps :
- /moodledata/cache
- /moodledata/localcache
- /moodledata/sessions
- /moodledata/temp
- /moodledata/trashdir
Omettre ces dossiers permettra un gain de temps de transfert non négligeable.
Changer le lien des images qui pointent vers l'ancien site
Vous avez installé votre plateforme Moodle avec l'adresse http//192.168.0.1/moodle. Puis vous avez modifié l'URL de votre site à http://monbeausitemoodle.org/moodle. Vous avez modifié les chemins dans le fichier de configuration config.php, mais les images de votre plateforme pointent toujours vers l'ancienne URL.
Pour corriger ceci, le plus simple est d'utiliser le script Replace de Moodle. Connectez-vous en tant qu'administrateur sur votre plateforme et allez sur http://monbeausitemoodle.org/admin/tool/replace/index.php. Remplissez les champs de sorte à changer http://192.168.0.1/ en http://monbeausitemoodle.org/.
Cette fonctionnalité n'est supportée que pour les sites Moodle avec des bases de données MySQL ou Postgres. Voyez à ce sujet MDL-26597 et MDL-35099.
Mettre à jour Moodle
Lorsque vous migrez Moodle, c'est souvent une bonne idée et l'opportunité de mettre à jour Moodle vers une version plus récente. Si vous gérez votre propre serveur, suivez les instructions de mise à jour, sinon, voyez si votre hébergeur peut le faire pour vous. Par contre, prévoyez d'effectuer d'abord la migration, et vérifiez que tout fonctionne bien avant d'effectuer la mise à jour. Cela limitera les risques de problème, et facilitera leur éventuelle recherche.
Restaurer un seul espace de cours entre deux serveurs
Vous pourriez avoir besoin de restaurer un seul cours d'une ancienne plateforme vers une nouvelle, notamment si vous testez la migration. Lors de la restauration d'une sauvegarde Moodle vers une plateforme sur un serveur différent de celui où a été créée la sauvegarde, les liens absolus peuvent être cassés. Pour corriger ce problème, il faut décompresser le fichier backup-coursename.zip et modifier le fichier moodle.xml en y remplaçant les liens avec $@FILEPHP@$
.
Par exemple, on remplacera http://yourserver.com/file.php/243/ par $@FILEPHP@$
.
Lors de la restauration, les chemins corrects vers le nouveau cours seront insérés.
Configurer le DNS & masquage d'adresse
Vous avez peut-être effectué des changements dans les entrées de DNS pour votre nouveau site Moodle. Si c'est le cas, il faudra un peu de temps pour que ces changements soient répercutés, soyez donc patient. Si votre serveur est situé derrière un pare-feu, il faudra également adapter les règles du pare-feu pour autoriser l'accès au nouveau serveur. Voyez la documentation sur masquerading.
Vérifier l'accès interne et externe
Si votre Moodle est prévu pour être accessible depuis un réseau interne et depuis internet, vérifiez que l'accès à votre site est possible, autant en interne que depuis internet.
Problème de corruption du Moodledata pendant un transfert FTP
Lors du transfert d'un site Moodle vers un autre hébergement, il est possible que les fichiers déposés et les images, stockées dans le dossier Moodledata, ne soient plus disponibles. Pour vous prémunir de ce dysfonctionnement, vous devrez effectuer le transfert de fichier en "mode binaire" (voir la configuration de votre client FTP).
Consulter ces messages : ici en français, ici en anglais
Copie d'un serveur de production, pour test
Si vous avez effectué une copie d'un serveur de production, pour faire des tests, vous ne souhaitez pas que cette copie envoie des courriels aux inscrits. Pour cela, ajoutez la ligne suivante dans le fichier config.php :
$CFG->noemailever = true;
Changement de domaine
Si vous migrez vers un nouveau domaine et que vous utilisiez l'auto-enregistrement par courriel, vous devrez créer une nouvelle clef API Google. Vous trouverez les explications et liens sur l'authentification par courriel.
Voir aussi
- Sauvegarde de site
- Restauration de site
- FAQ de sauvegarde
- Moving Moodle to a new server video
- Demande de fonctionnalité Convert hidden search/replace script into a proper core admin tool
Discussions (en anglais) sur les forums de Using Moodle :