Aktualizacja PrestaShop z gałęzi 1.7 do wersji 8 to najczęstszy projekt, jaki obecnie robimy przy istniejących sklepach. Powód jest prozaiczny: 1.7 nie dostaje już poprawek bezpieczeństwa, a każda podatność odkryta po końcu wsparcia zostaje w kodzie na zawsze. Pisaliśmy o skutkach w tekście o tym, czym kończy się praca na porzuconym PrestaShop 1.7. Tutaj pokazujemy, jak wygląda samo przejście, krok po kroku.
Do której wersji aktualizować: 8 czy 9?
Dla sklepu schodzącego z 1.7 rozsądnym celem jest najnowsze wydanie gałęzi 8 (w chwili pisania 8.2.x). PrestaShop 9 jest już na rynku, ale wymaga nowszego PHP i części modułów wciąż brakuje zgodnych wydań, więc przeskok 1.7 → 9 w jednym kroku bywa walką na dwóch frontach naraz. Gałąź 8 zachowuje zgodność z większością modułów i motywów z 1.7, a jednocześnie wraca pod parasol poprawek bezpieczeństwa. Migrację na 9 łatwiej zrobić później, już ze stabilnej ósemki.
Co sprawdzić przed aktualizacją PrestaShop?
Zanim cokolwiek ruszysz, potrzebujesz trzech rzeczy: pełnej kopii zapasowej (pliki + baza), listy modułów z wersjami oraz informacji, czy motyw i moduły mają wydania zgodne z PS 8. Do tego wersja PHP na serwerze: PrestaShop 8 działa najlepiej na PHP 8.1, więc hosting musi dawać możliwość jej ustawienia dla sklepu.
Na tym etapie wychodzą też rzeczy, które lubią zatrzymać projekt w połowie: modyfikacje w plikach rdzenia zamiast w nadpisaniach, moduły kupione lata temu bez aktywnej licencji na aktualizacje, własne zmiany w motywie bez żadnej dokumentacji. Lepiej wiedzieć o nich przed startem niż w trakcie. U nas ten etap ma formę audytu gotowości do aktualizacji i kończy się listą rzeczy do naprawienia przed migracją.
Jak wygląda aktualizacja krok po kroku?
- Kopia sklepu na staging. Cała migracja odbywa się najpierw na kopii, nigdy na produkcji. Staging powinien mieć to samo środowisko (wersja PHP, MySQL), inaczej testy nic nie mówią.
- Dociągnięcie 1.7 do końca gałęzi. Jeśli sklep stoi na starym wydaniu 1.7, najpierw aktualizacja do ostatniego 1.7.8.x. Z niego przejście na 8 jest najlepiej przetestowaną ścieżką.
- Aktualizacja rdzenia do 8. Modułem 1-Click Upgrade (autoupgrade), z włączonym trybem zachowania motywu albo przejściem na czysty motyw, zależnie od stanu obecnego.
- Moduły. Po kolei: aktualizacja tych, które mają wydania pod PS 8, wymiana lub rezygnacja z porzuconych. To zwykle najbardziej pracochłonny punkt całego projektu.
- Motyw i nadpisania. Weryfikacja szablonów, own overrides i haków. Większość motywów z 1.7 rusza na 8 po drobnych poprawkach, ale „drobne” trzeba znaleźć i poprawić.
- Testy ścieżki zakupowej. Rejestracja, koszyk, każda metoda płatności i dostawy, maile transakcyjne, integracje (ERP, kurierzy, porównywarki). Test zwrotu płatności również.
- Przełączenie produkcji. W oknie niskiego ruchu, z planem powrotu: kopia produkcji sprzed przełączenia zostaje nietknięta, dopóki nowa wersja nie przepracuje spokojnie kilku dni.
Ile to trwa i co może pójść nie tak?
Sklep z kilkunastoma standardowymi modułami przechodzi ten proces w kilka dni roboczych. Sklep z dziesiątkami modułów, integracją z ERP i motywem szytym na miarę potrafi zająć kilka tygodni, głównie przez punkty 4 i 5. Typowe niespodzianki to moduły płatności wymagające nowych wersji, niszowe moduły bez następców i modyfikacje rdzenia, o których nikt już nie pamiętał. Od strony kosztów rozpisaliśmy to osobno: ile kosztuje aktualizacja PrestaShop do wersji 8.
Jedna rzecz, której nie warto robić: aktualizować produkcji „na żywo”, bo moduł autoupgrade ma przecież opcję cofnięcia. Rollback po nieudanej migracji na działającym sklepie to loteria, w której nagrodą bywa odtwarzanie zamówień z maili.
Wolisz oddać to w sprawdzone ręce?
Aktualizacje PrestaShop 1.7 → 8 prowadzimy w ramach pomocy technicznej PrestaShop: zaczynamy od audytu bezpieczeństwa i gotowości (wyłącznie do odczytu, nic nie zmieniamy na produkcji), a kończymy przełączeniem sklepu i opieką po starcie. Przed migracją warto też przejść naszą checklistę bezpieczeństwa sklepu PrestaShop, bo aktualizacja to najlepszy moment na posprzątanie zaszłości.