Każdy, kto kiedykolwiek przenosił dużą stronę lub sklep internetowy, zna ten ból. Pasek postępu staje na 80%, serwer „mieli” w nieskończoność, a po odświeżeniu strony wita nas biały ekran lub błąd krytyczny. Co robimy, gdy najpopularniejsze narzędzia odmawiają posłuszeństwa? W CentrumSeo schodzimy do podziemia serwera.
Ostatnio mieliśmy na tapecie bardzo ciekawe wyzwanie. Zadanie wydawało się rutynowe: przenoszenie strony na home.pl. Źródłem był szybki, elastyczny serwer (MyDevil), a celem popularny hosting, który słynie z dość rygorystycznych zabezpieczeń. Paczka ze sklepem ważyła ponad 230 MB. Zaczęliśmy klasycznie – od wygenerowania archiwum przez popularną wtyczkę Duplicator. I tu zaczęły się schody.
Krok 1: Transfer serwer-serwer, czyli jak przyspieszyć migrację
Zwykłe pobieranie tak dużej paczki na lokalny dysk, a następnie jej wysyłanie przez FTP przy wolnym internecie, to strata cennego czasu. W CentrumSeo szanujemy czas naszych klientów, dlatego na początku postanowiliśmy maksymalnie przyspieszyć ten etap.
Napisaliśmy prosty skrypt, który bezpośrednio „zassał” pliki ze starego hostingu na nowy. Transfer serwer-serwer sprawił, że operacja, która mogłaby trwać godzinę, zajęła ułamek sekundy, wykorzystując gigabitowe łącza w serwerowni. Paczka była gotowa na miejscu. Mieliśmy jednak przed sobą większą przeszkodę.
Krok 2: Zderzenie ze ścianą, czyli limity home.pl
Gdy odpaliliśmy instalator, by rozpakować pliki, natrafiliśmy na mur. Większość wtyczek do migracji opiera się na skryptach PHP. Kiedy taki skrypt próbuje w jednym ciągu rozpakować archiwum wypchane dziesiątkami tysięcy drobnych plików WordPressa, limity home.pl (oraz wielu innych hostingów współdzielonych) dają o sobie znać.
Serwer traktuje to jako nadmierne obciążenie dysku (operacje I/O). Efekt? Następuje przekroczenie czasu wykonywania skryptu (max_execution_time), a serwer bezlitośnie „zabija” proces w połowie. Znika niezbędny plik wp-login.php, a instalator wypluwa komunikaty o uszkodzonym archiwum (częsty błąd Duplicator home.pl).
Można w takiej sytuacji załamać ręce i zrzucić winę na „zły hosting”. Ale my nie lubimy półśrodków.
Krok 3: Omijamy limity serwera komunikując się bezpośrednio z Linuxem
Skoro standardowe mechanizmy PHP i gotowe wtyczki nie dawały rady, postanowiliśmy całkowicie wyeliminować je z równania. Pamiętajmy, że pod spodem każdego hostingu kryje się potężny system operacyjny – najczęściej Linux. Zamiast prosić wtyczkę o przetworzenie plików, wydaliśmy polecenia bezpośrednio do systemu operacyjnego (tzw. komendy powłoki).
Napisaliśmy autorski mikroskrypt, który komunikował się prosto z konsolą Linuxa:
// Fragment naszej "tajnej broni" omijającej limity PHP:
system("wget -q -O paczka_linux.zip https://stary-serwer.pl/paczka.zip");
system("unzip -q -o paczka_linux.zip");
Dzięki użyciu natywnej systemowej komendy unzip, proces rozpakowywania zignorował wszystkie limity serwera dla PHP. Najbardziej zoptymalizowany, rdzennie systemowy mechanizm wypakował tysiące plików w kilka sekund. Bez błędów, bez zająknięcia i bez uszkodzonych paczek. Migracja sklepu WooCommerce zakończyła się pełnym sukcesem.
Co to oznacza dla Twojego biznesu?
Migracja strony WordPress to często operacja na otwartym sercu. Kiedy powierzasz to zadanie amatorom, przy pierwszym nietypowym błędzie usłyszysz „nie da się, to wina hostingu”.
W CentrumSeo wiemy, że zawsze się da. Narzędzia i wtyczki to tylko ułatwienia. Nasza prawdziwa wiedza zaczyna się tam, gdzie kończy się prosty panel administratora. Znamy architekturę serwerów, rozumiemy jak działają limity na hostingu współdzielonym i potrafimy pisać skrypty, które radzą sobie z najbardziej upartymi środowiskami.
Masz duży sklep internetowy, portal lub skomplikowaną stronę, którą trzeba przenieść bez stresu, przestojów i utraty danych? A może utknąłeś z własną migracją i wtyczki rozkładają ręce?
Napisz do nas! W CentrumSeo omijamy limity każdego dnia i z chęcią zajmiemy się Twoim projektem.