Migracja strony WordPress na nowy serwer za pomocą wp-cli + rsync

Jest wiele sposobów na przeniesienie strony na inny serwer – można używać rozmaitych wtyczek, bawić się w kopiowania po S(FTP), czy narzędziami typu PHPMyAdmin/Adminer. Jednak jeśli posiadamy dostęp SSH – co na szczęście staje się powoli normą nawet na hostingach – zdecydowanie najszybszym sposobem będzie wykorzystanie WP-CLI oraz rsync.
Opisany w artykule schemat można wykorzystać z drobnymi modyfikacjami w wielu sytuacjach, np:

  • migracja strony na nowy serwer – ze zmianą lub bez zmiany adresu strony
  • utworzenie wersji developerskiej strony – np. do testowania zmian

Wymagania

Na obu serwerach musimy mieć:

  1. Dostęp SSH
  2. zainstalowane WP-CLI

Plan migracji

Stary serwer (źródłowy)
1. Wykonanie zrzutu (dump) bazy danych
2. Skopiowanie plików oraz dumpa bazy na nowy serwer

Nowy serwer (docelowy)
1. Edycja danych dostępowych do bazy danych w pliku wp-config.php (opcjonalnie)
2. Import bazy danych z dumpa
3. Zmiana adresu strony w bazie danych (opcjonalnie)

Krok po kroku

Na starym serwerze (źródłowym)
1. Logujemy się za pomocą bezpiecznej powłoki (SSH) na serwerze oraz przechodzimy do katalogu, w którym znajduje się nasz WordPress. Przykładowo:

ssh janek@adres_serwera  # za adrees_serwera podstawiamy IP lub domenę
cd domains/domena.pl/public_html

2. Wykonujemy zrzut bazy danych:

wp db export "../$(date '+%F')_jakaś_nazwa.sql"

3. Wykonujemy synchronizację plików z katalogu bieżącego na nowy serwer – do docelowego katalogu nowej strony, przykładowo:

rsync -avz . user@docelowy_serwer:/home/user/domains/nowadomena.pl/public_html/

Jeśli na docelowym serwerze mamy już zainstalowanego WordPressa i skonfigurowane dostępy do bazy danych, używamy opcji --exclude wp-config.php, czyli:

rsync -avz --exclude wp-config.php . user@docelowy_serwer:/home/user/domains/nowadomena.pl/public_html/

4. Usuwamy kopię bazy danych, przykładowo :

rm ./2020-07-06_jakaś_nazwa.sql

Na nowym serwerze (docelowym)
1. Logujemy się na nowy serwer i przechodzimy do katalogu docelowego:

ssh user@docelowy_serwer  
cd domains/domena.pl/public_html

2. Jeśli potrzeba zmieniamy dane dostępowe do bazy danych w pliku wp-config.php
3. Importujemy bazę danych oraz usuwamy plik dumpa:

wp db import 2020-07-06_jakaś_nazwa.sql
rm 2020-07-06_jakaś_nazwa.sql

4. (Opcjonalnie) Jeśli zmienił się adres strony (domena) musimy jeszcze dokonać zmian w bazie danych:


wp option update siteurl https://nowadomena.pl
wp option update home https://nowadomena.pl

wp search-replace "https://staradomena.pl" "https://nowadomena.pl"

To wszystko, bez użycia wtyczek, za pomocą kilku poleceń wykonaliśmy migrację strony.

Dodaj komentarz