Przenoszenie WordPress między serwerami ze zmianą nazwy domeny

Facebooktwittergoogle_plusredditpinterestlinkedintumblrmailFacebooktwittergoogle_plusredditpinterestlinkedintumblrmail

Ten wpis jest po to, żebym następnym razem nie szukał znowu w Google tylko zajrzał sobie tu i miał wszystko „na gotowo”. Pomyślałem, że może komuś się też przyda.

Problem jaki chcę tu opisać dotyczy sytuacji kiedy masz stronę na swoim serwerze, w wersji demo dla klienta a chcesz ją przenieść na docelowy hosting i uruchomić pod nową, ostateczną w pełni kwalifikowaną nazwą domenową (FQDN). Mamy do wykonania tak naprawdę kilka głównych kroków

  1. wykonanie kopii zapasowej strony
  2. odzyskanie kopii zapasowej (na nowym serwerze)
  3. zmiana adresu strony

Zajmijmy się kolejnymi punktami z tej listy.

1. Wykonanie kopii zapasowej strony opartej o WordPress

Tu do dyspozycji są różne narzędzia. Często spotykanym sposobem jest skopiowanie wszystkich plików strony na swój komputer, za pomocą klienta FTP oraz wykonanie kopii bazy za pomocą phpMyAdmin. Dawniej sam tak robiłem ale sposób ten dawno zarzuciłem, dlatego screenów z tego procesu nie umieszczę.

Zamiast tego używam wiersza poleceń (czyli SSH) i kilku prostych komend. Dlatego też od wielu lat każdy hosting jaki wybieram dla siebie czy klienta obowiązkowo musi oferować SSH.

  1. logujemy się do ssh, ja używam od lat klienta putty
  2. tworzymy katalog na przenosiny i przechodzimy do niego
  3. wykonujemy zrzut bazy danychgdzie kolejne „zamazane” zmienne oznaczają:
    1 = nazwa serwera, na którym jest baza danych
    2 = nazwa użytkownika mającego dostęp do bazy danych
    3 = nazwa bazy danych
    4 = nazwa pliku do którego ma być zapisany zrzut bazywszystkie powyższe wartości znajdziecie w pliku wp-config.php, który znajduje się w głównym katalogu Waszego WordPressa.
  4. kopiujemy pliki wordpressa z katalogu głównego naszej stronygdzie 1 = ścieżka do katalogu public_html (lub podobnego) zawierającego wszystkie pliki strony; ważne aby nie posiadała na końcu znaku /
  5. kompresujemy je do archiwum tar

2. Odzyskanie kopii zapasowej WordPress na nowym serwerze

Na nowym serwerze odwracamy kolejność części kroków z poprzedniego punktu

  1. będąc zalogowanym do wiersza poleceń na nowym (docelowym) serwerze kopiujemy pliki za pomocą komendy scp

    gdzie
    1 = serwer ssh z którego chcemy pobrać plik
    2 = ścieżka (względem katalogu domowego, czyli tego w którym jesteśmy po zalogowaniu) i nazwa pliku
    3 = ścieżka i nazwa pliku jaki ma zostać utworzony na naszym serwerze

  2. rozpakowujemy

  3. kopiujemy rozpakowane pliki do katalogu w którym mają być pliki stronyTu mała dygresja. Niestety na dziś nie znam lepszego  sposobu na skopiowanie również plików ukrytych (z kropką na początku, np. .htaccess) niż skopiowanie całego katalogu, zatem poniżej widzicie screen gdzie zaszedł proces
    a) skopiowania katalogu z rozpakowanymi plikami do katalogu, w którym jest root witryny
    b) zmiany nazwy roota witryny na jakąś inną (tu z dopiskiem _2)
    c) zmiany nazwy skopiowanego wcześniej katalogu…zamotane, wiem, chodzi zasadniczo o to aby wszystkie pliki wordpressa ze starego serwera znalazły się tam gdzie na nowym jest root witryny

  4. odzyskujemy bazę danych z backupu

    1 = nazwa serwera, na którym jest pusta baza danych
    2 = nazwa użytkownika mającego dostęp do bazy danych
    3 = nazwa bazy danych
    4 = nazwa pliku z którego mają być załadowane dane bazy

3. Zmiana adresu strony opartej o WordPress

Kiedyś byłem przekonany że w tym kroku wystarczy edycja pliku konfiguracyjnego oraz proste zapytanie SQL podmieniające w bazie danych ciąg znaków staradomena.pl na nowadomena.pl (ewentualnie wyedytowanie zrzutu bazy danych edytorem tekstowym). Niestety żyłem w błędzie – WordPress przechowuje w bazie danych pewne zserializowane informacje, które przy takiej operacji zostają „uszkodzone”. Strona prawdopodobnie ruszy, ale może pojawić się szereg problemów z jej konfiguracją i poprawnym działaniem.

Na szczęście istnieje narzędzie rozwiązujące ten problem. Znalazłem je we wpisie na Smashing Magazine i odtąd używam. Ciekawostka – podobno działa również z Drupalem oraz innymi CMSami.

  1. modyfikujemy plik konfiguracyjny WordPress, tak aby korzystał z bazy danych na nowym serwerze
  2. pobieramy, rozpakowujemy i umieszczamy w katalogu gdzie jest nasza strona
  3. Uruchamiamy w przeglądarce adres http://<nasza-strona.pl>/Search-Replace-DB-master i podajemy dane do zmiany1 = stary adres
    2 = nowy adres
  4. Klikamy „update details” aby zapisać wartości a następnie „dry-run” aby sprawdzić czy skrypt poprawnie wyszuka interesujące nas dane do zmiany
  5. Jeśli jesteśmy pewni poprawności zmian klikamy „live run”, potwierdzamy i po 5 sekundach sprawa powinna być załatwiona
  6. Oczywiście nie zawsze wszystko pójdzie gładko i czasem coś jeszcze trzeba poprawić. W moim wypadku chodziło o problem opisany tutaj a związany z używanym przez stronę frameworkiem Cherry. Usunięcie plików tymczasowych jakie LESS wygenerował na starym serwerze pomogło.

 

 

 

Krzysiek Palikowski

Ryba w Webie. Uzależniony od sieci, kawy, Drupala, muzyki i pierogów.

More Posts - Website

  • Pawel

    Albo zamiast tego wszystkiego użyć akeeba backup

  • Ja też od wielu lat stosuję podobne praktyki – bez potrzeby instalacji dodatkowych narzędzi i wtyczek. Gorzej gdy trafi mi się Klient, który na swoim koncie hostingowym nie ma możliwości włączenia SSH – wtedy zaczyna zabawa.

  • Pawel

    niema co utrudniać sobie życia, akeeba na każdym hostingu robi takie przenosiny w kilka minut

  • Bardzo dobry poradnik 🙂