Migracja WordPress

Za sprawą polityki cenowej dostawcy usługi coroczna migracja ijbd.eu stała się tradycją. W home.pl, którego używam co łatwo sprawdzić za pomocą magicznych zaklęć nslookup i whois, jest duża różnica między regularną i promocyjną ceną usługi hostingowej. Ponieważ nie popieram dyskryminacji stałych klientów korzystam z promocyjnej oferty i co roku zmieniam serwer. Oczywiście trzeba przenieść usługę ze starego serwera na nowy i po to żeby operacja przebiegała sprawnie napisałem tę instrukcję. Mam nadzieję, że instrukcja będzie użyteczna także przy zmianie dostawcy usługi.

W instrukcji stosuję następujące przykładowe nazwy usług

  1. serwer1100000 – stary serwer
  2. serwer1200000 – nowy serwer
  3. 21000000_wpr – stara baza danych i użytkownik
  4. 22000000_wpr – nowa baza danych i użytkownik

Ogólna instrukcja przenoszenia WordPress w rożnych konfiguracjach, z której korzystałem jest dostępna tutaj. Niniejszą instrukcja jest materiałem pomocniczym, przeznaczonym dla świadomego użytkownika, który rozumie swoje działania i akceptuje ewentualne ryzyka z nimi związane. Za ewentualne szkody wywołane stosowaniem instrukcji autor nie odpowiada.

1. Kopiowanie danych ze starego serwera

Kopie danych ze starego serwera robimy logując się na niego przez ssh. Na serwerach home.pl katalogiem głównych serwera www jest ~/public_html, w jednym z jego podkatalogów będą pliki WordPress. Baza danych tworzona jest osobno, lista baz danych dostępna w panelu administracyjnym usługi serwera. Nazwa bazy wykorzystywanej przez WordPress jest w pliku wp-config.php.

ssh serwer1100000@serwer1100000.home.pl

$ mysqldump --add-drop-table -u 21000000_wpr -p 21000000_wpr > wpr.sql
$ tar cf public_html.tar public_html wpr.sql

Utworzony plik z kopią danych przenosimy (ftp) na nowy serwer. Instrukcja operatora logowania przez ssh dostępna tutaj.

2. Odtwarzanie danych na nowym serwerze

Na nowym serwerze przy pomocy panelu administracyjnego tworzymy bazę MySQL dla WordPress, instrukcja dostępna tutaj. Pierwszą część nazwy bazy danych (numer) nadaje automat, mamy możliwość podania własnej końcówki i warto z niej skorzystać. Użytkownik do zarządzania bazą nazywa się tak samo jak baza. Przyjmuję, że utworzona baza nazywa się 22000000_wpr a kopia danych utworzona w kroku pierwszym znajduje się w katalogu głównym nowego serwera.

ssh serwer1200000@serwer1100000.home.pl

#na wszelki wypadek kopiujemy katalog (jest standardowy i prawie pusty)
$ tar cf public.orig.tar public_html
#odtwarzamy kopię danych wykonaną na starym serwerze
$ tar xf public_html.tar 
#pliki WordPress trafiły do katalogu public_html, importujemy bazę danych
$ mysql -u 22000000_wpr -p 22000000_wpr < wpr.sql

#w pliku  wp-config.php zmieniamy parametry bazy danych:

/** The name of the database for WordPress */
define('DB_NAME', '22000000_wpr');

/** MySQL database username */
define('DB_USER', '22000000_wpr');

/** MySQL database password */
define('DB_PASSWORD', 'hasłodobazy');

#w hatalogu głównym serwera ~/public_html zmieniamy nazwę index.html
$ cd ~/public_html
$ mv index.html index.html.home
#w katalogu public_html powinien być plik index.php wywołujący WordPress

Standardowy plik index.html zawiera informację strona w budowie. Plik index.php został przekopiowany ze starego serwera i powinien uruchomić przeniesiony WordPress. Po wykonaniu powyższych kroków przenosiny WordPress są zakończone, starczy przekierować domenę na nowy serwer i wszystko powinno działać. Oczywiście można przetestować nową instancję.

3. Testowanie przeniesionego serwisu

Żeby przetestować przeniesiony serwis musimy utworzyć dla niego nową domenę (konfiguracja subdomeny – wybieramy opcję bez przekierowania serwisu jeżeli nie stosowaliśmy przekierowania) i zmodyfikować konfigurację WordPress by współpracowała ze zmienionym adresem (zmiana URL).  W celu modyfikacji WordPress logujemy się do panelu MySQL.

W tabeli wp_options modyfikujemy parametry (option_name):

siteurl
home

wstawiając utworzoną subdomenę zamiast oryginalnej. 
Uwaga tabela jest długa, można wyszukać wszystkie wpisy zawierające nazwę strony
stosując operator REGEXP 
^.*nazwastrony
wtedy wyszukiwanie zwróci wszystkie wartości zawierające tekst nazwastrony

Po zakończeniu testów przywracamy oryginalną konfigurację powtarzając import bazy danych:

ssh serwer1200000@serwer1100000.home.pl
$ mysql -u 22000000_wpr -p 22000000_wpr < wpr.sql

Oczywiście możemy także przywrócić dawne wartości korzystając z panelu administracyjnego bazy

4. Przekierowanie domeny na nowy serwer

Przekierowanie domeny na nowy serwer (przypisanie domeny do serwera) to ostatni krok operacji. Pamiętamy oczywiście, że propagacja zmian w DNS zabiera trochę czasu. Zmianę adresu na serwerze można śledzić za pomocą komend:

$ dig @dns.home.pl ijbd.eu
$ nslookup ijbd.eu

Zarządzający DNS ma możliwość wpływu na tempo propagacji zmian ale negocjacje z nim to już osobny temat.

 

One thought on “Migracja WordPress

  1. Michał

    Pomocny artykuł. Chciałbym jednak zwrócić uwagę na jedno niebezpieczeństwo. W bazie danych wordpressa adres url serwisu występuje również w wielu innych miejscach. Są to na przykład dodane “na twardo” adresy url zdjęć. W większości przypadków wystarczy wykonanie “search and replace” na rozpakowanym zrzucie bazy przed jej wgraniem. Niestety często są to url’e zapisane po przetworzeniu za pomocą funkcji PHP serialize. Wyglądają podobnie do “a:44:{s:7:”ijbd.eu”….” Można je wyszukać i zmienić ręcznie, ale wymaga to również zmiany liczby znaków określającej długość string’a url. Alternatywnie można skorzystać z darmowych narzędzi, na przykład http://pixelentity.com/wordpress-search-replace-domain/ Oczywiście najczęściej przy migracjach zostajemy przy starym adresie domenowym i nie mamy takiego problemu 😉

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.