- Przygotowanie do przenosin
- Ocena środowiska i wymagań
- Pełny backup i plan awaryjny
- Porządki przed migracją
- Wybór metody przeniesienia
- Narzędzia, które warto mieć
- Migracja ręczna krok po kroku
- 1. Eksport bazy i zrzut plików
- 2. Transfer plików na nowy serwer
- 3. Utworzenie bazy i import danych
- 4. Konfiguracja wp-config.php
- 5. Aktualizacja adresów i danych serializowanych
- 6. Reguły przepisywania i permalinki
- 7. Testy na pliku hosts i kontrola błędów
- Przenosiny z użyciem wtyczek i WP-CLI
- 1. Wtyczki do migracji – kiedy warto
- 2. Przykładowy przebieg z Duplicatorem
- 3. All-in-One WP Migration – obejście limitów
- 4. WP-CLI – szybkie komendy
- 5. Bezpieczeństwo i spójność danych
- Przełączenie na nowy serwer i kontrola jakości
- 1. Ostatnie testy i checklisty
- 2. Ustawienia DNS i propagacja
- 3. Certyfikat SSL i wymuszenie HTTPS
- 4. Wydajność, CDN i warstwa cache
- 5. Poczta, integracje i zewnętrzne usługi
- 6. SEO i mapowanie adresów
- 7. Sprzątanie i monitoring
- Specjalne przypadki i dobre praktyki
- 1. Sklepy i serwisy dynamiczne
- 2. Wielojęzyczność, multisite, custom tables
- 3. Serwery bez paneli i mikrooptymalizacje
- 4. Zmiana struktury mediów
- 5. Audyt bezpieczeństwa po migracji
- 6. Gdy domena zostaje ta sama
- 7. Najczęstsze problemy i szybkie rozwiązania
Migracja WordPressa na nowy hosting nie musi oznaczać przestoju, błędów i nerwów. Dobrze zaplanowany proces krok po kroku pozwala przenieść pliki, bazę, adresy URL i ustawienia tak, by użytkownicy nawet nie zauważyli zmiany. Poniższa instrukcja prowadzi przez przygotowanie, wybór metody, działanie ręczne lub z wtyczkami, testy oraz płynne przełączenie ruchu. Zadbamy o wydajność, bezpieczeństwo i spójność, tak aby Twoja strona nadal działała szybko i bezproblemowo na nowym serwerze.
Przygotowanie do przenosin
Ocena środowiska i wymagań
Zanim zrobisz pierwszy krok, sprawdź wymagania techniczne Twojej strony: wersję PHP, limity pamięci, moduły, kompresję GZIP, dostępność SSH, wersję MySQL/MariaDB oraz konfigurację serwera www. Zanotuj rozmiar katalogu wp-content (szczególnie uploads), liczbę wtyczek i motywów, cron jobs oraz integracje (płatności, poczta, webhooki). Zweryfikuj ograniczenia nowego hostingu w zakresie czasu wykonywania skryptów i limitów przesyłania plików.
Pełny backup i plan awaryjny
Wykonaj kopię zapasową plików i bazy. Najlepiej zrób to dwiema różnymi metodami (np. panel hostingu i narzędzie zewnętrzne). Sprawdź możliwość szybkiego odtworzenia na środowisku testowym. Przechowuj kopie w co najmniej dwóch lokalizacjach (lokalnie i w chmurze). Zapisz wersje kluczowych pluginów, motywu i WordPressa – powrót do stabilnej konfiguracji bywa szybszy niż debugowanie pośpiesznych aktualizacji.
Porządki przed migracją
Zaktualizuj WordPressa, motywy i wtyczki do stabilnych wersji. Usuń nieużywane rozszerzenia oraz stare kopie motywów. Opróżnij kosz wpisów, media, rewizje i transients, żeby zmniejszyć rozmiar paczki. Jeśli to sklep, zaplanuj okno serwisowe przy niskim ruchu, zatrzymaj zmiany treści (tryb konserwacji) i poinformuj zespół o planie przełączenia.
Wybór metody przeniesienia
Masz dwie główne ścieżki: przenosiny ręczne albo narzędzia automatyzujące. Ręczna metoda daje pełną kontrolę, omija limity paneli i lepiej sprawdza się przy dużych instalacjach. Wtyczki i skrypty ułatwiają mniej technicznym osobom cały proces, ale mogą mieć ograniczenia rozmiaru i czasu działania. W tym tekście pokazuję obie drogi, tak byś mógł dobrać narzędzie do potrzeb projektu.
Narzędzia, które warto mieć
- Panel hostingu: menedżer plików, phpMyAdmin, kreator baz
- FTP/SFTP lub SSH do transferu plików
- WP-CLI do operacji na bazie i wyszukiwaniu/zmianie URL
- Rsync i tar/gzip do szybkiego kopiowania na SSH
- Edytor do plików konfiguracyjnych i logów
Migracja ręczna krok po kroku
1. Eksport bazy i zrzut plików
Na starym serwerze wykonaj zrzut bazy (mysqldump, WP-CLI lub phpMyAdmin). Unikaj formatu, który „łamie” dane serializowane – standardowy SQL jest bezpieczny. Wyeksportuj całą bazę lub przynajmniej tabele z prefiksem WordPressa. Równolegle skopiuj katalog strony, szczególnie wp-content (plugins, themes, uploads). Jeśli masz SSH, skompresuj katalog (tar -czf) i pobierz archiwum zamiast tysięcy małych plików.
2. Transfer plików na nowy serwer
Prześlij archiwum na nowy hosting przez SFTP lub rsync. Rozpakuj we właściwym katalogu docelowym (np. public_html lub wskazany przez panel). Zadbaj o poprawne uprawnienia do plików i katalogów (najczęściej 644/755) oraz właściciela (chown), by uniknąć błędów zapisu. Upewnij się, że plik index.php i .htaccess (lub reguły serwera Nginx) są na miejscu.
3. Utworzenie bazy i import danych
Na nowym serwerze utwórz nową bazę i użytkownika z hasłem, nadaj pełne uprawnienia. Zaimportuj plik SQL ze starej instalacji – przez WP-CLI, mysql lub phpMyAdmin. Dla dużych zrzutów preferuj narzędzia konsolowe; panele www często mają limity. Jeśli występują błędy znaków, sprawdź kodowanie i domyślny collation w bazie. Zadbaj, by prefiksy tabel (wp_ lub niestandardowe) były zgodne z konfiguracją WordPressa.
4. Konfiguracja wp-config.php
Edytuj wp-config.php: wprowadź nazwę bazy, użytkownika, hasło i host bazy. Jeśli nowy dostawca wymaga innego hosta (np. 127.0.0.1 vs. nazwa serwera), zaktualizuj go. Sprawdź klucze bezpieczeństwa, prefiks tabel i stałe wymuszające debug lub cache. W środowiskach stagingowych można dodać blokadę indeksowania przez wyszukiwarki (Disallow w robots.txt i ustawienia w panelu WordPressa).
5. Aktualizacja adresów i danych serializowanych
Po imporcie zaktualizuj adres URL strony i adres WordPressa (siteurl i home). Użyj WP-CLI (wp search-replace) lub dedykowanych narzędzi wspierających dane serializowane, aby zamienić stary domenowy adres na nowy. Pamiętaj o adresach w widgetach, polach ACF, shortcodach i linkach w treści. Jeśli zmieniasz protokół na HTTPS, uwzględnij to w masowej podmianie.
6. Reguły przepisywania i permalinki
Po uruchomieniu na nowym hostingu wejdź do Ustawienia → Bezpośrednie odnośniki i zapisz strukturę, by odświeżyć reguły. Zweryfikuj .htaccess (Apache) lub config Nginx i dopisz konieczne mapowania. Poprawne permalinki są kluczem do SEO i działania odnośników wewnętrznych, API i zasobów multimedialnych.
7. Testy na pliku hosts i kontrola błędów
Zanim przełączysz ruch, użyj pliku hosts, aby „podszyć się” lokalnie pod nowy adres i zobaczyć stronę z nowego serwera. Sprawdź front, logowanie do wp-admin, procesy formularzy, płatności, wysyłkę maili, generowanie miniaturek i CRON (np. wc_cron). Przejrzyj logi błędów PHP i serwera, włącz WP_DEBUG_LOG na czas testów i napraw zgłoszone problemy.
Przenosiny z użyciem wtyczek i WP-CLI
1. Wtyczki do migracji – kiedy warto
Popularne wtyczki (Duplicator, All-in-One WP Migration, UpdraftPlus, Migrate Guru) automatyzują archiwizację i odtwarzanie. Sprawdzają się przy małych i średnich stronach, gdy nie masz dostępu SSH albo chcesz szybko sklonować witrynę na staging. Zwróć uwagę na limity rozmiaru uploadu i maksymalny czas wykonywania skryptów – przy większych serwisach lepiej przejść na konsolę lub metodę mieszaną.
2. Przykładowy przebieg z Duplicatorem
- Na starym hostingu generujesz paczkę (archive) i installer.php.
- Pobierasz oba pliki i umieszczasz je w katalogu docelowym nowego hostingu.
- Otwierasz w przeglądarce installer.php i podajesz dane nowej bazy.
- Instalator rozpakowuje pliki, importuje bazę i podejmuje próbę aktualizacji URL.
- Logujesz się do wp-admin i finalizujesz konfigurację, zapisując odnośniki.
3. All-in-One WP Migration – obejście limitów
Narzędzie eksportuje stronę do jednego pliku i pozwala wczytać go na nowym hostingu. Przy większych paczkach konieczne jest zwiększenie limitów uploadu w PHP lub użycie dodatków premium. Alternatywnie zastosuj import z dysku przez FTP i wykrycie pliku w katalogu wtyczki. Jeśli transfer wisi, podziel uploady: przenieś ręcznie katalog uploads, a resztę zrób wtyczką.
4. WP-CLI – szybkie komendy
- Eksport bazy: wp db export backup.sql
- Import bazy: wp db import backup.sql
- Zmiana adresów: wp search-replace stary-adres.pl nowy-adres.pl –all-tables
- Opróżnianie cache: wp cache flush
- Aktualizacje: wp core update, wp plugin update –all
WP-CLI jest stabilne, szybkie i lepiej znosi duże zbiory danych niż panele www. Dodatkowo pozwala pisać skrypty do powtarzalnych migracji, co skraca czas kolejnych wdrożeń.
5. Bezpieczeństwo i spójność danych
Chroń paczki migracyjne hasłem, usuwaj instalatory po zakończeniu przenosin i nie zostawiaj katalogów tymczasowych w webroot. Dane uwierzytelniające do nowej bazy przechowuj poza repozytorium. Jeżeli w czasie migracji treści nadal się zmieniają (np. zamówienia), zrób finalny inkrementalny zrzut różnicowy i wykonaj krótkie okno mrożenia edycji, by uniknąć rozjechania danych.
Przełączenie na nowy serwer i kontrola jakości
1. Ostatnie testy i checklisty
Przed przełączeniem przejdź checklistę: logowanie, rejestracja, koszyk, płatności, wyszukiwanie, formularze, komentarze, mapy, API, wtyczki SEO, generowanie sitemap, odczyty zewnętrznych usług, CRON (publikacje, e-maile), generatory cache, minifikacja CSS/JS i lazy-load obrazów. Zmniejsz TTL rekordów DNS dzień wcześniej, by skrócić propagację. Sprawdź błędy 404 i przekierowania 301/302.
2. Ustawienia DNS i propagacja
Gdy wszystko działa na nowym hoście, zaktualizuj rekord A (lub CNAME) domeny na adres nowego serwera. Niskie TTL (np. 300 s) skracają propagację. Monitoruj, czy ruch stopniowo kieruje się na nowe IP. W przypadku wielu subdomen pamiętaj o ich indywidualnych rekordach. Jeśli używasz zewnętrznego proxy (np. CDN), zaktualizuj również wskazania w panelu dostawcy.
3. Certyfikat SSL i wymuszenie HTTPS
Na nowym hostingu wystaw certyfikat Let’s Encrypt lub wgraj istniejący. Ustaw przekierowanie 301 z HTTP na HTTPS. Zaktualizuj adresy w bazie, jeśli wcześniej działałeś na HTTP. Sprawdź mieszane treści (mixed content) – absolutne linki do grafik, CSS i JS muszą wskazywać HTTPS. W przypadku reverse proxy pamiętaj o nagłówkach X-Forwarded-Proto, by WordPress prawidłowo wykrywał protokół.
4. Wydajność, CDN i warstwa cache
Po migracji odśwież pamięć podręczną: wtyczkową i serwerową. Włącz lub skonfiguruj mechanizmy cache na nowym hostingu (page cache, object cache). Rozważ CDN dla statycznych zasobów. Dostosuj reguły kompresji i nagłówki Cache-Control/Expires. Jeżeli wcześniej miałeś inne moduły (np. Redis, Opcache), upewnij się, że są aktywne i poprawnie skonfigurowane. Testuj TTFB i CLS/LCP w narzędziach wydajnościowych.
5. Poczta, integracje i zewnętrzne usługi
Zweryfikuj wysyłkę e-maili z serwera: ustaw SMTP, SPF, DKIM, DMARC. Upewnij się, że webhooki, bramki płatności, integracje ERP/CRM mają zaktualizowane endpointy. Sprawdź klucze API i uprawnienia wtyczek korzystających z usług zewnętrznych. Jeśli przeniosłeś również pocztę, przetestuj skrzynki, aliasy i autorespondery, aby uniknąć utraty wiadomości po przełączeniu ruchu.
6. SEO i mapowanie adresów
Gdy domena się zmienia, przygotuj plan przekierowań 301 dla wszystkich kluczowych adresów. Zaktualizuj mapę witryny, prześlij ją w Google Search Console, ustaw preferowany adres i sprawdź indeksowanie. Przeanalizuj logi crawl, napraw błędy 404, upewnij się, że kanoniczne adresy prowadzą do właściwych podstron. Pamiętaj o odświeżeniu pliku robots.txt, jeśli w stagingu był zablokowany.
7. Sprzątanie i monitoring
Usuń instalatory, pliki tymczasowe i stare debug logi. Zarchiwizuj kopie sprzed migracji i przechowuj je w bezpiecznej lokalizacji przez uzgodniony czas. Włącz monitoring uptime i alerty błędów (np. przez logi serwera i narzędzia APM). Przez kilka dni sprawdzaj obciążenie CPU/RAM, czas odpowiedzi i błędy PHP. Jeśli wykryjesz skoki obciążenia, zoptymalizuj wtyczki i zapytania do bazy.
Specjalne przypadki i dobre praktyki
1. Sklepy i serwisy dynamiczne
Dla WooCommerce i membershipów zaplanuj tzw. freeze content: zamknij koszyk na 10–30 minut podczas finalnego przełączenia, wykonaj różnicowy zrzut bazy ze zmianami od czasu pierwszej kopii i zaimportuj go na nowy serwer bezpośrednio przed aktualizacją DNS. Zweryfikuj kolejkę maili transakcyjnych, statusy zamówień i webhooks do bramek płatności.
2. Wielojęzyczność, multisite, custom tables
W instalacjach multisite pamiętaj o domenach/subdomenach dla każdego bloga, oddzielnych uploadach i mapowaniu adresów. Wtyczki wielojęzyczne (WPML/Polylang) przechowują dane w wielu tabelach – upewnij się, że search-replace objął je wszystkie. Jeśli korzystasz z niestandardowych tabel, sprawdź, czy eksport/import nie pominął ich przez filtrację prefiksów.
3. Serwery bez paneli i mikrooptymalizacje
Na serwerach VPS z SSH użyj rsync do inkrementalnego kopiowania i mysqldump z parametrami ograniczającymi blokady. Skonfiguruj PHP-FPM zgodnie z dostępną pamięcią, zoptymalizuj MySQL (buffer pool, slow query log) i logrotate. Rozważ staging z automatycznym seedowaniem danych i skrypty do powtarzalnych wdrożeń (Makefile lub prosty bash), by skrócić czas przyszłych migracji.
4. Zmiana struktury mediów
Jeżeli zmieniasz lokalizację lub sposób przechowywania mediów (np. z lokalnych uploadów na S3/Spaces), wykonaj osobny etap: synchronizację plików, podmianę URL w bazie oraz aktualizację wtyczki offload. Przetestuj generowanie miniaturek i dostępność plików historycznych. Ustal politykę wersjonowania i retencji, aby nieusunięte stare zasoby nie podnosiły kosztów i nie zaśmiecały CDN.
5. Audyt bezpieczeństwa po migracji
Zmień wszystkie hasła (baza, FTP/SFTP, użytkownicy admin), zaktualizuj klucze w wp-config i ogranicz dostęp do panelu logowania (rate limit, CAPTCHA, 2FA). Sprawdź uprawnienia plików i katalogów, wyłącz wylistowanie katalogów, włącz WAF lub reguły ModSecurity. Przejrzyj logi autoryzacji i skonfiguruj alerty przy próbach siłowych.
6. Gdy domena zostaje ta sama
Nawet jeśli przenosisz stronę bez zmiany domeny, zaplanuj okno, w którym zawartość nie będzie edytowana, by uniknąć rozdwojenia treści. Zastosuj plik hosts do testów i finalny „delta import” danych zmienionych od pierwszego zrzutu. Po przełączeniu przywróć edycję i sprawdź, czy wszystkie komentarze, zamówienia i rejestracje znalazły się w nowej bazie.
7. Najczęstsze problemy i szybkie rozwiązania
- Biała strona: sprawdź błędy PHP, wyłącz tymczasowo podejrzane wtyczki, podnieś memory_limit.
- Brak miniaturek: upewnij się, że katalog uploads i ścieżki są poprawne; wygeneruj miniatury ponownie.
- Logowanie przekierowuje w kółko: sprawdź cookies i adresy siteurl/home, wymuś HTTPS tylko po aktywnym certyfikacie.
- 404 po przenosinach: zapisz ponownie odnośniki, sprawdź reguły w .htaccess/Nginx.
- Wolne działanie: włącz object cache, zoptymalizuj zapytania, przejrzyj cron i harmonogramy zadań.
Na koniec zwróć uwagę na drobne, ale kluczowe detale: poprawne typy MIME, kompresję, brak zbędnych skryptów na front-endzie i aktualne mapy adresów. To często różnica między „działa” a „działa świetnie”.
Cały proces to nic innego jak dobrze zaplanowana migracja: kopia, przeniesienie, podmiana adresów, testy, przełączenie i optymalizacja. Pamiętaj o relacji między plikami a baza danych, która zapisuje większość konfiguracji i treści. Zadbaj o spójność, odstrzel wąskie gardła i przeprowadź kontrolę po wdrożeniu. Dzięki temu zmiana serwera będzie dla użytkowników niezauważalna, a dla Ciebie – przewidywalna i bezpieczna.
Drobna lista kontrolna do szybkiego użytku:
- Kopia plików i bazy + test odtwarzania
- Przeniesienie plików i konfiguracji
- Import SQL i search-replace adresów
- Weryfikacja logów błędów
- HTTPS i certyfikat, przekierowania 301
- Cache i CDN, testy wydajności
- Aktualizacja rekordów DNS i monitoring
Aby uniknąć niespodzianek, trzymaj się checklist, zapisuj napotkane problemy i rozwiązania. Z czasem wypracujesz własny szablon procesu, który skróci kolejne wdrożenia.
Po migracji zachowaj minimalny zestaw narzędzi do diagnostyki: dostęp do logów, WP-CLI, prosty skrypt do sprawdzania statusów, oraz monitor uptime. Regularnie weryfikuj spójność kopii zapasowych i odświeżaj klucze w konfiguracji. Jeśli strona korzysta z pamięci podręcznej, pamiętaj o cyklicznym czyszczeniu cache i reindeksacji wyszukiwarek. Dzięki temu nowa infrastruktura pozostanie stabilna i szybka na dłużej.