Migrer un site wordpress avec wp-cli
Depuis la sortie de wp-cli, les opérations courantes sur un site web écrit en wordpress sont plus facilement automatisables. La mise à jour et la migration sont moins contraignantes.
Les opérations qui suivent demandent un accès ssh aux différents serveurs.
On souhaite migrer notre site de https://foo.com
vers
https://bar.com
. On se rend sur le serveur foo.com
, on suppose que
notre site web wordpress est dans le dossier /path/wordpress
. On va
créer un backup de la BD et du projet (dans /backup
)
ssh -p xxx username1@foo.com # où xxx est le numéro de port pour se connecter en ssh à foo.com
cd /path/wordpress
wp-cli db export /backup/wordpress.sql
tar czf /backup/wordpress.tar.gz .
exit
On copie les données de l’ancien site vers le nouveau (on peut se
connecter à bar.com
, et le copier directement via foo.com
, mais
parfois les hébergeurs bloquent certains ports, on va le faire le
local).
Sur le serveur distant, on suppose qu’on a l’arborescence suivante:
/path2/wordpress
pour le dossier wordpress, et /backup2/
pour le
dossier de backup.
mkdir -p /tmp/wordpress
cd /tmp/wordpress
# récupère le backup de bar.com en local
scp -P xxx username1@foo.com:/backup/wordpress.sql .
scp -P xxx username1@foo.com:/backup/wordpress.tar.gz .
# envoie le backup vers foo.com
scp -P yyy wordpress.sql username2@bar.com:/backup2/ # où yyy est le numéro de port pour se connecter en ssh à foo.com
scp -P yyy wordpress.tar.gz username2@bar.com:/backup2/
On se rend ensuite sur le serveur bar.com
pour y migrer notre site.
ssh username2@bar.com
cd /path2/wordpress
tar xzf /path2/wordpress.tar.gz
On doit ensuite créer une base de donnée si elle n’existe pas, et
modifier les informations d’accès dans le fichier wp-config.php
, On
peut l’ouvrir via nano ou un autre éditeur en console (nano wp-config.php
).
On modifie les informations suivantes:
define('DB_NAME', 'Nom de la base de données');
/** MySQL database username */
define('DB_USER', 'Nom d`utilisateur de la BD');
/** MySQL database password */
define('DB_PASSWORD', 'Mot de passe d`accès à la BD');
/** MySQL hostname */
define('DB_HOST', 'Nom d`hôte de la BD (ou localhost si pas fourni)');
Reste à importer les différentes tables, et changer le nom de domaine,
on est toujours dans foo.bar:/path2/wordpress
.
wp-cli db import /backup2/wordpress.sql
wp-cli search-replace "https://foo.com" "https://bar.com"
wp-cli search-replace "https%3A%2F%2Ffoo.com" "https%3A%2F%2Fbar.com"
# on en profite aussi pour migrer les url qui ne sont pas en https://
wp-cli search-replace "http://foo.com" "https://bar.com"
wp-cli search-replace "http%3A%2F%2Ffoo.com" "https%3A%2F%2Fbar.com"
On vérifie également le fichier .htaccess
, en remplaçant toute
occurrence de foo.com
par bar.com
, et notre site devrait être
disponible via https://bar.com
.