Migrer un Wordpress vers YunoHost

Configuration de mon YunoHost

Matériel: x64 vps
Accès Internet : dans un datacenter
YunoHost version:
yunohost : 3.2.1
yunohost-admin : 3.2.1 (stable)
moulinette : 3.2.0 (stable)
ssowat : 3.2.0 (stable)
As tu modifié ton yunohost avec des configuration spécifiques ou bien utilise tu uniquement la web administration et/ou la ligne de commande yunohost ? basique

Description de mon problème

Bonjour,

J’ai actuellement un wordpress sur un hébergement mutualisé, que je souhaite rapatrier dans YunoHost. J’en profite au passage pour changer de nom de domaine (déjà acheté et “ajouté” dans YunoHost).

Pour le moment j’ai exporté la base de données et récupéré tous les fichiers du wordpress via FTP.
J’ai déjà corrigé la base de donnée pour remplacer l’adresse du site et les appels de liens (requête SQL pour remplacer “ancien domaine” par “nouveau domaine”).

Je me questionne sur la bonne marche à suivre ensuite.

Dans YunoHost, je pensais ajouter une nouvelle application Wordpress puis remplacer le contenu de la base de données MySQL créée lors de l’installation par mon export SQL (j’ai installé l’application PhpMyAdmin dans YunoHost)

J’hésite au niveau du remplacement des fichiers :

  • Remplacer l’intégralité des fichiers WordPress créés lors de l’installation de l’application par ceux exportés depuis mon ancienne installation ?
  • Ou seulement wp-content ?
  • Ou seulement le dossier uploads de wp-content ?

Et dois-je modifier les accès (autorisations) des fichiers après copie ?

Hormis les images et vidéos, j’ai des plugins que je souhaite retrouver sur ma nouvelle installation :

  • Custom-login (personnalisation de l’écran de connexion)
  • email-subscribers (envoi de mails aux utilisateurs lors de nouveaux articles)
  • login-with-ajax (permettre de restreindre l’accès aux utilisateurs inscrits)
  • members (gestion des rôles des utilisateurs)
  • wp-user-avatar (ajout d’avatars personnalisés aux utilisateurs)

Vos conseils ?

Merci d’avance pour votre aide ! :slight_smile:

Bonjour,

Je ne connais pas Wordpress et les manipulations que tu envisages. Cepedant je peux donner mon avis et tenter de répondre à tes questions.

Je procéderai ainsi également

Je pense qu’il faut faire comme si tu migrais sur un nouveau serveur en suivant cette page Moving WordPress « WordPress Codex

Yunohost installe des modules en plus et configure wp-config.php. Il faudra certainement jouer au jeu des sept différences avec le fichier fourni par Yunohost (https://github.com/YunoHost-Apps/wordpress_ynh/blob/master/conf/wp-config.php) car tu ne pourras pas réimporter ton fichier de config tel quel.
https://github.com/YunoHost-Apps/wordpress_ynh/blob/master/scripts/install#L162-L172

J’écraserai le tout personnellement.

Il suffirait de rappeler le script de mise à jour en ligne de commande pour rejoue toute la procédure et corrige les droits. ca devrait fonctionner

Pour les plugins, je ne sais pas s’ils seront migrés également. Il faudrait voir comment fonctionne Wordpress là dessus.


Mon avis sans avoir testé et sans connaitre le produit :partying_face:

Merci pour ta réponse, je teste ça dès que possible (mais bon entre temps j’ai un autre souci plus global :’( )

Je viens de migrer dans la douleur deux Wordpress vers mon Yuno, mais enfin ça tourne. Voici comment je m’y suis pris.

  1. Installer l’app sur Yunohost
  2. Transférer les fichiers wp-content de l’ancien serveur vers YunoHost. J’ai utilisé rsync pour écraser le contenu, tout en conservant les autres fichiers (le plugin Simple LDAP, entre autres). Par exemple :
cd /var/www/wordpress__2
sudo rsync -av login@ancien.serveur:wp-content/* wp-content
sudo chown -R wordpress__2:wordpress__2 wp-content
  1. J’exporte la base de données initiale (un export de base depuis PHPMyAdmin marche très bien).
  2. Je vide la base de données du (bon !) Wordpress sur YunoHost.
  3. Je réimporte ensuite la base sur Yunohost : depuis PHPMyAdmin pour un petit site, ou pour un plus gros site en ligne de commande avec un truc du genre :
sudo mysql -uroot wordpress__2 < mon-export.sql
  1. J’insère la ligne de config qui va bien pour le LDAP :
INSERT INTO wp_options VALUES('','sll_settings','a:14:{s:14:"account_suffix";s:0:"";s:7:"base_dn";s:27:"ou=users,dc=yunohost,dc=org";s:18:"domain_controllers";a:1:{i:0;s:9:"localhost";}s:9:"directory";s:2:"ol";s:4:"role";s:10:"subscriber";s:13:"high_security";s:5:"false";s:8:"ol_login";s:3:"uid";s:7:"use_tls";s:5:"false";s:9:"ldap_port";s:3:"389";s:12:"ldap_version";s:1:"3";s:12:"create_users";s:4:"true";s:7:"enabled";s:4:"true";s:7:"version";s:3:"1.5";s:6:"groups";a:1:{i:0;s:0:"";}}','yes');
  1. Je me connecte sur WordPress avec mon ancien mot de passe.
  2. J’active tous les plugins qui vont bien, dont Simple LDAP et tant qu’à faire WP Fail2Ban.
  3. C’est fini :slight_smile: Je peux désormais me connecter avec mon mot de passe YunoHost (en LDAP) ou mon mot de passe Wordpress (natif). Je peux désactiver ce deuxième depuis la config de Simple LDAP.

Notez, si vous avez changé le préfixe de vos tables sur votre ancienne installation, que Wordpress utilise ce préfixe pour définir les droits. Vous risquez de vous trouver dans une situation très désagréable où il vous sera possible de vous loguer, mais Wordpress refusera l’accès à la console d’admin. Il faudra donc adapter (au moins) les tables wp_options et wp_usermeta. Exemple :

UPDATE wp_usermeta SET meta_key = REPLACE(meta_key, 'ancienprefixe_', 'wp_');

Et voilà :slight_smile:

3 Likes

It’s not about YunoHost. Wordpress has a import/export feature for those who want to migrate their wordpress.

1 Like

Yes, but it is very limited. It won’t transfer your media for instance.

Il y a aussi le plugin Duplicator.

L’idée étant qu’une fois installé sur le site d’origine, il génère un gros fichier archive et un install.php. Avec un accès ssh au serveur de destination, vous pouvez faire comme suit.

Sur le serveur Yunohost de destination, installer un WP « vide».

Repérer et conserver le user et le pass Mysql dans le fichier /var/www/wordpress/wp-config.php.

# cat /var/www/wordpress/wp-config.php | grep DB_

Déplacer temporairement (juste par habitude et prudence) ce dossier pour l’effacer plus tard si tout s’est bien passé.

# mv /var/www/wordpress/ /var/www/wordpress.bak

Créer un nouveau dossier pour le Wordpress à transférer et changer le propriétaire.

# mkdir /var/www/wordpress 
# chown wordpress: /var/www/wordpress

Transférer le install.php et l’archive générée par Dublicator vers /var/www/wordpress comme bon vous semble (rsync, scp, sftp,…).

Changer le propriétaire.

# chown -R wordpress: /var/www/wordpress

Se rendre sur l’url de votre futur Wordpress en ajoutant /install.php et suivre l’assistant. Vous pourrez utiliser le login et le mot de passe Mysql récupéré avant.

Et si tout s’est bien passé, ça devrait rouler.

Supprimez l’installation vide de WordPress.

# rm -rf /var/www/wordpress.bak

C’est grosso modo comme ça que je fit il y a quelques années.

Merci pour le partage.

J’avais vu ce plugin et hésité. Avec cette solution, tu ne déploies pas le Simple LDAP. Il te faudra donc l’installer à la main et reprendre l’étape 6 que j’ai citée plus haut si tu souhaites une intégration au LDAP.

Merci pour vos astuces :wink:

Concernant les plugins de migration type Duplicator, j’en ai testé deux (dont duplicator) mais le WordPress d’origine étant sur un hébergement mutualisé, le dossier wp-content est trop massif pour réussir à finaliser la création du fichier de sauvegarde :sob:

On m’a cependant parler de la possibilité d’allonger le timeout via le paramètre max_execution_time dans le fichier .htaccess… ça vous parle ?

Hello !

Merci @djib pour le tutoriel de migration.
Je suis bloqué à cette étape :

En fait je ne comprends pas où il faut insérer cette ligne.

Si c’est une requete à executer depuis phpmyadmin, ca ne marche pas car je n’ai pas de table wp_options.

Merci pour votre aide !

Bonsoir,

Tu passes par phpyAdmin ?
Si oui, clique bien sur la bonne base de données dans la colonne de gauche.

Si tu passes directement par la console, utilise show databases; pour voir toutes tes bases de données, puis use wordpress__2 par exemple.

Tiens moi au courant.

Oui je passe par phpMyAdmin.
En fait j’ai suivi ton post à la lettre.

  • J’ai installé un WP vide sur YNH
  • J’ai installé phpMyAdmin
  • J’ai vidé la db wordpress de mon YNH, j’ai supprimé tout son contenu
  • J’ai importé tout le contenu de l’ancienne DB de mon ancien phpmyadmin, mais pas de table wp_options

Grand merci pour ton aide.

Bonjour,

C’est très étonnant car c’est bien une table du modèle de données. As-tu une table options un préfixe différent de wp_ ? Avais-tu une telle table dans ton ancienne base de données ?

1 Like

Apparemment j’aurais bien un préfix mod361_, cela doit être lié au fait que j’ai installé WP automatiquement depuis mon hébergement OVH à l’époque.

22

Je vais essayé avec cette table mod631_options. Merci pour ton aide, j’aurais pu deviner seul mais toujours peur de casser quelque chose.

Pas de souci. Il faudra bien que tu appliques la fin de mon message si tu changes le préfixe de table.

OK c’est bon migration terminée et fonctionnelle !
Merci encore pour ton tuto.
Voici ce que j’ai fais au cas où cela peut aider d’autres personnes :

  • Renommé toutes mes tables avec le préfixe wp_
  • Cherché tous les anciens préfixes que j’ai trouvé dans la DB et renommé en wp_

Sinon en effet impossible d’accéder à l’interface admin.

Quasiment un an plus tard j’ai pris mon courage à deux mains et j’ai suivi ta solution, qui a parfaitement fonctionné pour moi !

J’ai juste fait le choix de ne pas faire l’étape 6. (import de la ligne de config pour le ldap) car dans mon cas ce mode d’authentification n’était pas pertinent ;-).

Juste une ultime question sur une étape que tu passes un peu vite : concernant WP Fail2Ban, il faut “juste” l’activer ou il faut faire quelque chose de plus pour le lier à YunoHost ?

Cool si ça marche :slight_smile:

Pour WP Fail2Ban, je pense qu’il suffit de l’activer. La config n’est pas en base de données.
https://docs.wp-fail2ban.com/en/4.2/configuration/wp-fail2ban.html
Je n’ai pas vérifié, mais ça doit se faire facilement en testant un mauvais mot de passe :slight_smile:

Effectivement en activant le plugin il ne semble pas nécessaire de faire quoi que ce soit (et de toute façon avec la version gratuite on est restreints aux paramères par défaut).
J’ai essayé de faire une ou deux fausses tentatives sur la page de login, je n’ai pas vu de différence avec avant l’activation. Mais si j’ai bien compris la documentation les tentatives sont loggées quelques part et je suppose que c’est au bout d’un certain nombre de tentatives incorrectes et dans une période données que l’IP se retrouve bannie.

Bonjour,
J’ai utilisé la même procédure que @djib et celà a fonctionné.
Juste eu à modifier ’ ’ par NULL dans la ligne mysql pour LDAP.

INSERT INTO wp_options VALUES(NULL,'sll_settings','a:14:{s:14:"account_suffix";s:0:"";s:7:"base_dn";s:27:"ou=users,dc=yunohost,dc=org";s:18:"domain_controllers";a:1:{i:0;s:9:"localhost";}s:9:"directory";s:2:"ol";s:4:"role";s:10:"subscriber";s:13:"high_security";s:5:"false";s:8:"ol_login";s:3:"uid";s:7:"use_tls";s:5:"false";s:9:"ldap_port";s:3:"389";s:12:"ldap_version";s:1:"3";s:12:"create_users";s:4:"true";s:7:"enabled";s:4:"true";s:7:"version";s:3:"1.5";s:6:"groups";a:1:{i:0;s:0:"";}}','yes');

Toujours ok en 2024 donc.
Merci !

3 Likes