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
.