Copier / Dupliquer un site WordPress en ligne sur un serveur local avec Duplicator

Bouée de sauvetage
ThemeForestElegantThemes

Bouée de sauvetage

Disposer d’une copie conforme d’un site WordPress en ligne sur un serveur local, est-ce vraiment utile ?

Effectuer une copie en local d’une installation WordPress déjà en ligne est très sécurisant, notamment pour tester de nouvelles fonctionnalités et éviter de laisser le site en maintenance trop longtemps en anticipant les éventuels problèmes, auxquels on fait tous face un jour ou l’autre. Cependant si vous ne monétisez pas votre site ou si n’avez que peu de trafic vous allez perdre votre temps plus qu’autre chose : effectuer un backup complet de votre WordPress avant d’essayer un plugin ou de lancer une des mises à jour majeures de WordPress (3.7, 3.8, 3.9) est suffisant… et recommandé. En cas de problème votre site sera hors ligne le temps d’effectuer un backup, pas de quoi s’affoler donc. Par contre, pour un site à fort trafic, qui génère des revenus conséquents, ou si des utilisateurs dépendent de l’accessibilité du site mère (réseaux de sites) ou encore si des utilisateurs payent pour avoir accès à une formation en ligne, on ne peut pas se permettre de laisser le site hors ligne trop longtemps. Si vous êtes dans un cas similaire, ou si vous développez, testez, ou modifiez les fichiers core, installer wordpress sur un serveur local vous permet de travailler sereinement en plus de vous permettre de travailler hors connexion. Si avez besoin d’effectuer des tests de configuration serveur, rappelons que c’est aussi une simulation de tout l’environnement de développement Web qui héberge votre site.

Copier-Coller mon WordPress et ma base de données sur mon serveur local , pourquoi ça ne marche pas ?

 

La sérialisation des données (data serialization)

Ce qui se passe, c’est que WordPress, ses thèmes, et ses plugins stockent des données en utilisant une méthode appelée la sérialisation. La sérialisation des données est la source de notre problème : si vous changez la longueur ou le nombre de caractère d’une chaîne de donnée sérialisée, vous devez aussi déclarer le nouveau nombre de caractères déclaré dans la chaîne générée.

Exemple d’une URL sérialisé :

Nous avons

$array = array( 
	'url' => 'http://wp-infinity.com'
);

Qui devient, une fois sérialisé :

a:1:{s:3:"url";s:22:"http://wp-infinity.com";}

Où s:22 est le nombre de caractères qui compose l’URL. Il y a donc bien un problème  en passant de http://wp-infinity.com (s:22) vers http://localhost/monsite/ (s:22). http://localhost/monsite/ contenant 25 caractères on devrait avoir http://localhost/monsite/ (s:25). Il nous faut donc une solution qui tienne compte des données sérialisées.

Search and Replace

Une approche simple serait de faire une sauvegarde de base de données, de lancer un script de type Search and Replace de façon à modifier tout ce qui fait référence au nom de domaine, puis d’importer la base de données modifiée dans le nouvel emplacement. Ca peut fonctionner mais…  Le script d’interconnectit.com tente de tenir compte des données sérialisées, mais cela ne fonctionne pas pour les widgets. Dans mon cas, avec mes 3 colonnes, des sidebars différentes attribués à chaque catégorie et des widgets différents par langue, ça ne me fait pas loin d’une centaine de widgets lourdement configurés, incluant du PHP et des classes CSS. Hors de question bien entendu de tout refaire à la main. Le search and replace peut fonctionner, mais vous perdez vos widgets et parfois la configuration d’un certain nombre de plugins. Bon à savoir : certains plugins disposent également de la fonction Export/Import des paramètres.

Solution : le plugin WordPress Duplicator

On a vu plus tôt qu’un trop grand nombre de plugins WordPress installé ralentit votre site. Avec WordPress Duplicator pas de problème, une fois le travail achevé vous pourrez le désinstaller. Contrairement à la fonction Export de WordPress le plugin WordPres Duplicator va vous permettre de télécharger une copie de votre site préconfiguré en fonction de la destination de cette copie. Il suffit d’indiquer les identifiants de la base de données de destination, ainsi que le nouveau répertoire où sera installé WordPress. Ca peut être une adresse locale comme : http://localhost/monsite/ou pour déplacer WordPress vers un autre répertoire : /home/votre_login_ftp/www/nouveau_dossier_de_destination/.

Exemple de création d’un package pour un import ultérieur sur un serveur local :

Configuration de duplicator pour export local   J’ai dû exclure mon fichier Upload (ici uploads2) pour réduire la taille de l’archive, sinon ça plantait en plein milieu. Si vous êtes dans mon cas, il suffit de copier-coller par la suite votre dossier upload par FTP, les images peuvent être déplacées tel-quel à la main tant qu’elles gardent le même nom de fichier. Ce sera plus rapide de toute façon, et indispensable si vous avez beaucoup d’images. Archive trop lourde, exclusion des images   Il ne vous reste plus qu’à cliquer sur Bouton next afin de lancer un scan qui vous avertira d’un certain nombre d’avertissements susceptibles de faire échouer l’opération. Comme je le disais plus haut, exclure mon dossier upload pour réduire la taille de l’archive a suffi, il restait pourtant un certain nombre d’avertissements : Création d'archive pour transfert de wordpress Télécharger le script d’installation nommé « installer.php », puis votre archive. Le script est indispensable pour déployer cette archive. Téléchargez les deux et placez-les dans le dossier de destination, là où vous voulez déployer cette copie de votre site WordPress (avec XAMPP, ce sera au sein d’un dossier placé dans le répertoire /htdocs). Telecharger archive de la copie de wordpress   Enfin, ouvrez votre navigateur et lancez localhost/monsite/intaller.php par exemple, pour une copie sur un serveur local. Les informations de connexion sont préremplies si vous les avez renseignés avant de créer l’archive. Je précise qu’il faut avoir créé la base de données au préalable, comme expliqué sur cette page pour installer WordPress en local avec XAMPP. Tester la connexion à la base de données locale avant de cliquer sur Run deployment : Test de connexion à la base de données locale   La copie du site est déployée, il ne reste qu’à effectuer la mise à jour du répertoire, des URLs et des données sérialisées. De nouveau si vous avez renseigné ces informations avant de créer l’archive, elles sont préremplies. Vous avez aussi la possibilité d’activer tout de suite les plugins installés sachant qu’ils sont désactivés par défaut, et d’effectuer un scan des tables de la base de données : Modification des données sérialisées, des URL et du répertoire où est installé WordPress   Copier maintenant le dossier uploads vers la nouvelle destination de façon à récupérer les images si comme moi, vous avez dû alléger l’archive. Enfin, procéder aux 4 étapes finales en cliquant sur chacun des liens présents, à savoir:

  1. Visualiser le rapport d’installation
  2. Sauvegarder les permaliens pour régénérer le fichier .htaccess
  3. Se promener sur le site pour vérifier que tout fonctionne
  4. Supprimer les fichiers d’installation (installer.php + l’archive)

Procéder aux 4 étapes finales

Conclusion

A chacun sa méthode, parfois un search and replace suffira, parfois non. J’ai trouvé cette solution en cherchant comment conserver mes widgets après le transfert. Une chose est sûre, je ne passerai plus que par le plugin Duplicator pour tout type de migration de WordPress. Voilà du travail bien fait. Et un plugin polyvalent.

Besoin d'aide ?

Si vous avez besoin d'aide merci d'utiliser le forum WordPress, pas les commentaires. Vous y recevrez de l'aide rapidement.

Commentaires 44

  1. merci pour ces infos precieuses je viens de me mettre à wp et mon club de photo me charge de refaire son site je me posais la question de savoir comment après avoir fait le site en local le migrer « tout fait » chez lhebergeur « ovh » en l’occurrence … mon interrogation de débutant etant la possibilité ou pas d’exporter le tout plugin base etc merci

    1. Auteur

      Oui bien sûr c’est la même méthode, mais dans l’autre sens. Je vais écrire l’article pour mettre en ligne un site développé en local. En attendant vous avez compris le principe, il faut juste mixer avec cet article : Installer WordPress chez OVH. Bref vous pouvez commencer à travailler en local, pas de soucis, même les widgets seront conservés.

  2. Merci pour ce tuto fort clair et concis. Je comptais justement bosser sur la migration de mon thème et cela me permettra de le faire sereinement offline et sans avoir besoin d’une connexion internet !

  3. Merci ! Je n’arrivais plus à cloner mon site en local à cause du poids de ma base de données… Ça fait 2 ou 3 mois que j’essaie régulièrement et que je laisse tout en chantier parce que ça m’énerve…. Avec Duplicator j’y suis arrivée et je vais pouvoir tester mes mise à jour en local avant de le faire sur le site distant.

    Merci !!

  4. avec la nouvelle présentation de votre site, je ne trouve pas comment me connecter sur le forum

    1. Auteur
  5. Salut,
    merci pour ce tuto, je suis en train de le suivre, mais la phase ou duplicator scan est super longue, j’ai retiré pourtant certain dossier comme upload et le dossier de mes sauvegardes upraft plus ce qui me donne environ 97mo de data, avec une base de donné sql de 5mo environ. Est ce normal que le scan prend plus que 10 min?

    Merci de vos retours…

    1. J’ai résolu mon problème, j’ai trouvé la solution dans le support de duplicator, pratique.
      C’était la version de duplicator qui était buggué, une mise à jour et hop, nikel.
      Souci, j’ai eu 2 erreurs:
      SERIALIZATION ERRORS 2

      Mais apparemment sans incidence car mon site fonctionne bien…

      Merci encore pour ce tuto…

  6. Bonjour
    J’ai suivi le tuto pour installer wordpress
    mais ovh me dit
    Nom de la base de données invalide : trop long

    que faire ?
    je veux mettre en ligne mon blog en conservant le nom de mon domaine

    Cordialement

    1. Auteur
      1. oui mais je n’ai pas un onglet pour créer un BDD plus court chez ovh

        j’ai pris un abonnement mutualisé

        Que faire?

      2. Auteur

        Vous utilisez Duplicator pour le mettre en ligne ?
        Vous êtes-vous connecté via phpmyadmin, dispo dans le manager OVH, pour créer la nouvelle base ?

  7. Bonjour,

    J’ai un problème lors du dézipage de mon archive dans mon dossier « monsite ». Il me demande de vérifier que l’archive est bien complète ou non corrompue, pourtant lors du scan aucun problème…
    De quoi cela peut-il venir ?

  8. Bonjour! Après 3 autres solutions essayées (qui m’ont pris toute la journée de hier, j’ai essayé la votre! 30 minutes et c’est OK!)

    CEPENDANT, j’ai un petit problème. La Home Page s’affiche très bien, mais lorsque j’essaye de naviguer, aucun lien ne marche…
    Après, wordpress marche, et je peux accéder aux pages par le CMS…

    Une solution?

    Merci beaucoup !

    1. Bonjour,

      Idem…

      Seb et Anton, avez-vous pu solutionner ce problème ? ou quelqu’un d’autres ?

      Merci d’avance….

  9. Merci beaucoup pour ce tuto ! c’est tout simple et rapide, très bon plugin, je recommande. Pour ceux qui ont des difficultés, il y a également des vidéos tuto sur le site de l’éditeur qui peuvent aider.

  10. J’ai le même problème que Anton et Seb… seulement la page d’accueil qui s’affiche.
    Que faut-il faire avec les permaliens ?
    Merci pour votre aide

    1. Auteur

      Dans Réglages > Général > indiquer l’URL locale dans Adresse web de WordPress (URL) et Adresse web du site (URL) éventuellement.
      Et simplement sauvegarder la page Réglages > Permaliens

      1. C’est ce que je viens de faire ou plutôt de vérifier…l’adresse locale était déjà renseignée dans les champs.
        Par contre le problème persiste lorsque je vais sur les autres pages du site : Not found on this server.
        Cela peut-il venir d’un autre paramétrage ?

        PS : En tout cas merci pour ce tuto, qui accélère grandement le processus pour une novice comme moi. Avec duplicator, cela m’a prit 20 min alors que cela faisait des jours que j’essayais avec d’autres méthodes.

      2. Auteur

        Il peut être nécessaire de mettre à jour les liens du menu, ou peut être n’avez vous pas indiqué la « Nouvelle URL » locale correctement lors de la création du « Package »

      3. Je viens de refaire le processus, de tout vérifier. Tout s’est bien passé, sans erreurs, la nouvelle url est correcte.
        Les autres pages restent introuvables sur le serveur.

      4. Je viens de refaire le processus, de tout vérifier. Tout s’est bien passé, sans erreurs, la nouvelle url est correcte.
        Cependant, toujours le même problème, la page d’accueil : ok, mais les autres pages restent introuvables sur le serveur.

      5. Auteur

        Ca me fait ça aussi tant que je n’ai pas sauvegardé les permaliens, aussi peut être qu’il ne faut pas les laisser par défaut. Vous pouvez essayer de les régler sur Réglages les plus courants > Nom de l’article

        Ou mieux Réglages les plus courants > Structure personnalisée > /%category%/%postname%/

        Vérifiez aussi les URLs dans votre fichier .htaccess par ftp.

      6. Çà y est, ça fonctionne ! :)))
        Après avoir changé de réglage sur les permaliens 4 ou 5 fois, au bout de la 5ème ça a fonctionné.

        Un grand merci pour vos lumières !

        1. Une petite contribution pour ceux qui aurait le message « requested URL was not found on this server » en local.
          Il faut vérifier que le module Apache rewrite_module est activé.
          Pour ma part, j’utilise wampserver et il suffit de faire un clic sur Wampserver et de suivre Apache>Modules_Apache et cocher rewrite_rule.
          Wampserver arrête et redémarre les services et … ça marche !

  11. Merci pour cette article précis et clair. j’ai migré mes 2 sites de OVH à un NAS synology pour les tests ! super ! j’avais seulement un problème de droit sur les répertoires wordpress mais vite corrigé ! bravo !

  12. OK… j’ai pu faire fonctionner la copie en local via les permaliens. Cependant, je ne peux personnaliser comme je veux… ce n’est pas grave.

    En revanche, comme mon site en prod est un multi-site avec deux versions, le site principal est ok en local après restauration, mais le second, je ne peux accéder au tableau de bord comme pour le site.

    Il y a t-il des précos ou une procédure différente concernant la duplication de l’ensemble d’un multi-site en local via Duplicator ?

    Merci d’avance.

  13. Merci beaucoup pour cette solution et ce tuto. C’est exactement ce que je cherchais sans jamais réussir à le trouver… oufffff :-)

  14. MERCI très utile ce tuto , bien expliqué et détaillé :juste une chose qui ne fonctionne pas
    en site local tout yest mais à part ma page d ‘acceuil , le reste du menu ne fontionnent pas

    en cliquant j’ai erreur 404,pourtant j’ai bien enregisté les permaliens
    ,

  15. TRES bien fait ,ce tuto ; juste une précision pourque sa fonctionne comme à l’identique
    pour moi en tout cas :serveur local wamp ;il faut cocher la case APACHE -module apache -rewirite_module e
    merci
    nonne soireé

  16. Génial merci pour ce super tuto très clair et très détaillé. C’est exactement ce que je cherchais. Tout a super bien fonctionné !

  17. J’applique ce tuto pour dupliquer un second site en local mais je bute sur le volume de l’archive base de données.
    Elle fait 51.9Mb (soit moins que sur ta capture d’écran) mais j’ai un message d’erreur :
     » POST Content-Length of 22244671 bytes exceeds the limit of 8388608 bytes in on line 0″
    Quand j’exclue le dossier UPLOADS elle ne fait plus que 21.12 Mb mais j’ai le même message d’erreur.
    Une idée pour m’aider à solutionner ce problème ?
    Merci d’avance.

  18. Merci !!
    J’ai combiné plusieurs tuto pour y arriver. Parce que pour un non-initié ce n’est pas toujours simple de comprendre les parties expliquées sans captures. Mais c’est celui-ci qui m’a le mieux servi.

  19. Merci beaucoup pour ce tuto. Je rencontre juste un soucis en important mon théme (optimizer) enfant chez OVH, une bonne partie des modification effectuer sur le tableau de bord de Word press n’a pas été prise en compte pour la page d’accueil ainsi qu’un soucis d’UTF 8. Si vous avez quelques conseils je suis preneuse, si non je referai ce qui na pas fonctionner chez OVH.

  20. Merci pour ce tuto, j’ai enfin réussi à installer mon wordpress en local !!
    J’ai perdu toute une après-midi en essayant de l’installer avec wamp + script search and replace avec d’autres tutos, mais sans succès.
    Un seul problème apparait : les images du footer n’apparaissent pas (site : www.vosservicesadomicile.fr). Si vous avez une idée du problème, je suis preneur…

  21. Bonjour, j’ai des licences comme Visual composer et je voudrais mettre un wordpress en double pour faire des modifications hors ligne.
    Est ce que avec cette méthode vous pensez que je pourrais conservé ma licence aussi sur le hors ligne?

  22. je veux utiliser wordpress sur un serveur local wampserveur comment configurer wordpress pour avoir toutes les fonctionnalités comme sur un site en ligne.
    j’ai installé wordpress dans wampserveur mais j’arrive pas à executer les taches coorectes des extensions zip que j’ai installées dans wordpress.
    aider moi comment à configurer bien wampserveur pour mieux executer ces extensions pour travailler comme sur un site en ligne.
    aider moi

  23. Bonjour, alors là, chapeau, je suis hyper convaincu, je l’ai même testé et oui c’est un très bonne outil de duplication pour wordpress. Merci pour cet article.

  24. D’après ce que je vois, c’est un tuto très intéressant que je vais essayer .
    En revanche, je me demande si par example je fais ces manipulations sur mon ordi avec wamp installé et un jour je me déplace avec un autrr ordi, dans ce cas là que dois-je faire.
    Est-ce qu’il y aura des configuration à refaire ou quoi exactement.
    J’aimerai bien savoir avant de me mettre au travail SVP.

  25. bonjour
    j’ai voulu faire une copie sur mon localhost
    mais quand j execute localhost/monsite/installer.php

    j’ai :; requirement pass fail ?,

    merci de votre conseil
    crdlt

  26. Effectivement très performant ce DUPLICATOR. Excepté qu’il est impossible de se connecter au site transféré localhost/monsite/admin ou wp-admin les identifiants pswd ne fonctionne pas. J’ai reçu lors de l’exécution de duplicator une erreur stipulant que la mise à jour du userid n’a pas fonctionné. Je change dans la db en manuel, rien n’y fait. Une idée ? cdt – Thierry

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Besoin d'aide ?

Si vous avez besoin d'aide merci d'utiliser le forum WordPress, pas les commentaires. Vous y recevrez de l'aide rapidement.