Oszacowanie uaktualnienia Magento to proces gromadzenia informacji o modyfikacjach zastosowanych w instalacji, którą zamierzasz zaktualizować, sprawdzania, czy te modyfikacje mogą powodować problem, a następnie oceny, ile czasu potrzeba na ich obejście.
Wszystkie modyfikacje można dosłownie podzielić na poza rdzeniem i wewnątrz rdzenia .
Modyfikacje poza rdzeniem to te, które nie zostaną zastąpione aktualizacją. Są to rozszerzenia innych firm , podstawowe pliki umieszczone w zasięgu lokalnym (app / code / local / Mage) i niestandardowy motyw .
Wewnętrzne modyfikacje są stosowane bezpośrednio w plikach podstawowych Magento (aplikacja / kod / rdzeń), plikach lokalizacyjnych (app / locale / en_US), szablonach podstawowych i niektórych rzeczach, takich jak skrypty javascript , biblioteki zewnętrzne, które rzadko są dostosowywane, należy jednak wziąć pod uwagę .
Modyfikacje poza rdzeniem
Rozszerzenia stron trzecich
Podczas aktualizacji głównym źródłem problemów są rozszerzenia innych firm. Co oznacza, że więcej rozszerzeń masz więcej czasu na ich analizę.
Pierwszą rzeczą do sprawdzenia jest to, czy funkcjonalność zapewniana przez rozszerzenie nie jest jeszcze zaimplementowana w uaktualnianej wersji Magento. Na przykład niektóre rozszerzenia, takie jak Yoast_CanonicalUrl
, Mxperts_CustomerAddress
czy Fontis_Wysiwyg
były szeroko stosowane w Magento 1.3.xx i starszych, ale teraz są częścią podstawowej funkcjonalności Magento i już nie potrzebuje.
Dlatego dobrym pomysłem jest sprawdzenie (zapytaj klienta), czy naprawdę potrzebujesz wszystkich posiadanych rozszerzeń. Mogą istnieć pewne rozszerzenia, które zainstalowałeś, ale tak naprawdę nigdy nie używałeś. W tym momencie dobrze jest zrobić coś w rodzaju porządków.
Następnie ważną rzeczą do sprawdzenia jest zgodność każdego z pozostałych rozszerzeń z aktualizowaną wersją Magento. W przypadku, gdy niektóre rozszerzenia nie są kompatybilne i żadne podobne rozszerzenia nie są dostępne, będziesz miał trudność z utratą niektórych funkcji lub modyfikacją istniejących rozszerzeń, aby były kompatybilne.
Uwaga: Nie modyfikuj bezpośrednio rozszerzenia innej firmy, ale utwórz nowe rozszerzenie, które przedłuży nieaktualne rozszerzenie, a następnie ustawi zależność w pliku XML ładowania początkowego nowego rozszerzenia.
Po wykonaniu wszystkich tych czynności można przedstawić rzeczywistą analizę każdego z pozostałych rozszerzeń. Zawsze zaczyna się od sprawdzenia etc/config.xml
akt. Są 3 rzeczy, których należy szukać:
- Przepisywanie klas nie jest samo w sobie czystą techniką, ale w niektórych przypadkach nie ma innej możliwości. Więc jeśli zmieniona zapisana klasa została zmieniona w nowej wersji Magento, może to stanowić potencjalny problem.
- Aktualizacje układu prawdopodobnie nie spowodują problemu z aktualizacją, ale jeśli rozszerzenie odnosi się do bloku, który jest nieaktualny w nowszej wersji Magento, będziesz musiał to obejść.
- Aktualizacje SQL są wysoce niedocenianym źródłem problemów podczas aktualizacji. Problem występuje, gdy rozszerzenie innej firmy tworzy klucz obcy odnoszący się do jakiegoś pola w domyślnej tabeli Magento. W rezultacie pole to jest zablokowane przed modyfikacjami. A jeśli natywny skrypt instalacyjny spróbuje zaktualizować to pole, zakończy się niepowodzeniem po cichu. Następnie każdy następny skrypt instalacyjny odnoszący się do tego pola spowoduje awarię aktualizacji.
app / code / local / Mage
Po zakończeniu korzystania z rozszerzeń czas zajrzeć do app/code/local/Mage
katalogu. Tutaj znajdziesz zmodyfikowane pliki podstawowe przeniesione do local
zakresu. Każdy z nich z pewnością będzie cię kosztował trochę siwych włosów, ponieważ nigdy nie wiesz (jeśli to nie ty je tam umieściłeś), co tam zmodyfikowano iz jakiego powodu. Musisz więc porównać każde z nich z miejscem pochodzenia i przenieść dodatkową funkcjonalność do pliku korespondencyjnego nowej wersji.
Motyw niestandardowy
Ostatnią modyfikacją poza grą jest niestandardowy motyw. Może to nie wydawać się dużym problemem, ale w rzeczywistości jest to szara strefa. Podstawowy motyw Magento jest modyfikowany z wersji na wersję, a każdy niestandardowy motyw musi naśladować niektóre z tych modyfikacji. Niestety nie ma srebrnej kuli, która określałaby, czego szukać i co należy migrować. Po aktualizacji przygotuj się na poważne niespodzianki i drobne niedociągnięcia.
Modyfikacje wewnętrzne
W idealnym świecie nie ma ich. Ale kiedy dostaniesz instalację Magento po tym, jak została wykorzystana przez zewnętrznych deweloperów, którzy oferują wiele za tanie, możesz oczekiwać wszystkiego. Tak więc modyfikacje wewnętrzne to te, które zostaną nadpisane podczas procesu aktualizacji. W większości przypadków nie spowoduje to żadnych błędów, ale w rezultacie utracisz funkcjonalność dodaną w tak brutalny sposób.
Jedynym sposobem na wykrycie wewnętrznych modyfikacji jest porównanie wszystkich plików instalacji Magento z czystymi plikami tej samej wersji. Polecam to zrobić z git. Dlaczego? Po prostu dlatego, że ładnie obsłuży wszystkie znaki nowej linii i białe znaki.
Nawet jeśli Twoja instalacja Magento nie jest uruchomiona w programie git, nadal możesz skopiować pliki do osobnego katalogu, a następnie uruchomić git init. Następnie dokonaj wstępnego zatwierdzenia, skopiuj „czyste” pliki Magento i uruchom git status
. Otrzymasz coś takiego:
Teraz w zależności od liczby zmodyfikowanych plików, które można uruchomić jednocześnie git diff
dla każdego pliku lub całej partii. To daje kompleksowe odniesienie do wszystkich wprowadzonych modyfikacji. Jeśli masz wizualizację git, taką jak phpStorm, życie jest dla ciebie o wiele łatwiejsze:
Sugeruję, aby to zrobić git diff > changes.txt
, zawsze będziesz mieć ręcznie listę modyfikacji.
Dysponując listą podstawowych modyfikacji, możesz oszacować, co trzeba przenieść do nowej wersji i ile czasu to zajmie.
Teraz chciałbym udzielić kilku porad dotyczących faktycznej aktualizacji. Ten proces jest dobrze udokumentowany, więc nie będę pisać, jakie polecenia uruchomić i gdzie kliknąć. Chcę jednak podkreślić kilka ważnych rzeczy:
- Zakładamy, że przeprowadzasz aktualizację w swoim środowisku programistycznym. Uruchomienie aktualizacji na serwerze produkcyjnym to samobójstwo.
- Nie pozwól im zmieniać niczego podczas produkcji. Umieść swoje Magento pod kontrolą wersji, a nawet tymczasowymi plikami blokującymi przed zapisem.
- Wyłącz wszystkie rozszerzenia innych firm, ale zwróć uwagę, które z nich były początkowo wyłączone, abyś ich później nie włączał.
- Sprawdź, czy na serwerze działa skrypt czyszczenia Magento. Inaczej obciąć wszystkie tabele zaczynając
dataflow_*
, log_*
, report_*
.
- Przywróć domyślny motyw dotyczący czasu aktualizacji.
Po zakończeniu skryptu aktualizacji:
- Odwoływanie się do
changes.txt
dokonanych przed migracją wszystkich wewnętrznych modyfikacji, które naprawdę są warte migracji.
- Migruj
app/code/local/Mage
modyfikacje znalezione przed aktualizacją.
- Po kolei włącz rozszerzenia zewnętrzne.
- Odłóż swój motyw i kompleksowo porównaj wynik z serwerem produkcyjnym.
- Wdrażaj do produkcji, gdy będziesz zadowolony z rezultatu.
Wniosek
Wiem, że wszystko to brzmi przerażająco, ale jeśli regularnie aktualizujesz, utrzymujesz rdzeń w czystości i instalujesz rozszerzenia tylko od zaufanych dostawców i tylko jeśli naprawdę ich potrzebujesz, nie napotkasz większości trudności opisanych w tym artykule. Dbaj o zdrowie swojego Magento EcoSystem, a otrzymasz nagrodę.
Post Scriptum
W bardzo skomplikowanych przypadkach warto zacząć od nowa od najnowszej instalacji najnowszego Magento i krok po kroku migrować motyw i funkcjonalność sklepu. To na pewno zajmie trochę czasu, ale w końcu będziesz miał zdrowy system Magento z pełną świadomością tego, co się dzieje.