Nauka kryjąca się za udaną migracją Drupala 7 do 9 (i dlaczego niektóre z nich zawodzą)
Opublikowany: 2021-12-15Pamiętasz tę świetną witrynę, którą wszyscy w Twojej firmie kochali (a przynajmniej tolerowali), że zostałeś zmuszony do migracji do nowszego systemu? A zespół, któremu zaufałeś, że to zrobi, może odgryzł więcej, niż jest w stanie przeżuć? To, co kiedyś mogło być idealnie ładną i funkcjonalną witryną, teraz staje się bałaganem z dziwacznymi problemami, słabą wydajnością, a czasem prawie bezużyteczną witryną.
Jeśli brzmi to znajomo i napotykasz dziwne problemy po zaktualizowaniu witryny Drupal 7 (lub 6) do Drupala 9 (lub 8), przeczytaj ten artykuł do końca . Zajmiemy się typowymi problemami, z którymi borykają się właściciele witryn po zaktualizowaniu Drupala 7 (lub 6) do Drupala 9 (lub 8) i jak można je rozwiązać. Nie obejmie to wszystkich problemów, które widzimy, gdy przychodzimy na ratunek migracji, ale powinno przynajmniej doprowadzić Cię do punktu, w którym możesz spać w nocy.

Aktualizacja Drupala z 7 do 9 — podstawowe wyzwanie
Pierwsze pytanie, które prawdopodobnie sobie zadajesz, brzmi: „Dlaczego?” Aktualizacja z Drupala 7 do Drupala 9 (Drupal 8 został wycofany) wydaje się, że nie powinno to być trudne z perspektywy platformy.
Cóż, Drupal 8 zmienił wszystko. Przeszedł całkowity remont architektoniczny, aby CMS był bardziej zrównoważony, odpowiedni i łatwiejszy do opanowania w dłuższej perspektywie. Przyjęcie nowoczesnych technologii i frameworków, takich jak programowanie obiektowe, Symfony, Twig, najnowsze wersje PHP i (tak wiele) więcej, pozwoliło również społeczności Drupala na wykładniczy wzrost, przyswajając szerszy zakres umiejętności, aby pomóc w tworzeniu Drupala. Oznacza to, że teraz łatwiej jest znaleźć eksperta, który zbuduje i utrzyma Twoją witrynę na Drupalu. Wspaniałą wiadomością jest to, że uaktualnienie do dowolnych przyszłych wersji Drupala (takich jak Drupal 8 do Drupal 9) po tej początkowej migracji jest niezwykle łatwe i nie wymaga przebudowy.
Ale wracając do obecnego problemu, wiele organizacji wciąż migruje z Drupala 7 do 9 , co wiąże się z całkowitą przebudową witryny. Sama przebudowa jest na tyle skomplikowana, że bez zachowania obecnej struktury treści może być dopasowana do najbardziej doświadczonych programistów. W większości przypadków większe strony internetowe wymagają jeszcze większej uwagi, ponieważ zazwyczaj zawierają wiele niestandardowych modułów, które nie mają prostej ścieżki aktualizacji. Wszystko to razem otwiera nieskończone możliwości błędów.
W przypadku zespołów, które nie próbowały tego typu migracji, najczęściej pierwszym błędem migracji Drupala z 7 na 9 jest brak przygotowania. Pierwszym i najważniejszym krokiem do udanej migracji Drupala jest przeprowadzenie dokładnego audytu migracji, aby przeanalizować każdy najmniejszy szczegół obecnej struktury witryny . Ten raport nie tylko pomaga ocenić konsekwencje migracji, ale także daje wgląd w obszary wymagające ulepszeń. Następnym najważniejszym krokiem jest podjęcie decyzji, czy zezwolić wyspecjalizowanemu partnerowi ds. rozwoju Drupala (ktoś, kto dzień w dzień wdycha Drupala) na przeprowadzenie migracji. Tak jak wolałbyś, aby kardiochirurg wykonał operację wszczepienia bajpasów niż chirurg ortopeda; posiadanie wyspecjalizowanej firmy skupionej na Drupalu, która zbuduje Twoją witrynę Drupal, doprowadzi do udanej migracji.

Typowe wyzwania związane z migracją 7 do 9 na Drupalu
Jednym z najczęstszych źródeł frustracji po migracji z Drupala z 6/7 na 8/9 jest brak wiedzy, od czego zacząć rozwiązywanie problemów. Jak możesz, z umiejętnościami kodowania lub bez, dowiedzieć się, gdzie leżą prawdziwe problemy? Łatwo — sprawdź swoje dzienniki błędów. Wiem, wygląda na to, że otwierasz kolejną puszkę robaków, próbując zrozumieć, co mówią dzienniki, ale poniżej przeprowadzimy Cię przez typowe.
Jak znaleźć moje dzienniki błędów?
|
Przejdźmy od razu do najczęstszych problemów, z jakimi borykają się właściciele witryn Drupal po migracji z Drupala 7 do Drupala 9.
Witryna ledwo działa / jest zepsuta
- Problemy z serwerem: Twój serwer może być zagrożony, jeśli nie masz wystarczających uprawnień dostępu do serwera. Głębsze spojrzenie na dzienniki błędów pomoże Ci zrozumieć, skąd pochodzi problem. Jeśli jest to problem z serwerem, upewnij się, że masz wystarczające prawa dostępu do serwera. Skontaktuj się z dostawcą usług hostingowych, aby zwiększyć limit pamięci, jeśli masz problem z brakiem miejsca. Jeśli to nie pomoże, zgłoś im zgłoszenie, w którym wspomina się o problemie z serwerem.
- Niestandardowy kod: Jeśli Twoja witryna Drupal 6/7 była bardziej złożona, niż się spodziewano, są szanse, że zamiast oceniać niestandardowy kod i odpowiednio go mapować przed migracją, przeprowadzono zwykły lifting i przesunięcie. Jeśli masz niestandardowe warunki, które uruchamiają się, gdy Twoja strona się ładuje, a nie znajduje powiązanego z nią niestandardowego kodu, skończysz z uszkodzoną stroną. Pierwszą rzeczą do zrobienia jest sprawdzenie, czy poprawnie oceniłeś witrynę w audycie migracji (jeśli tak zrobiłeś), aby sprawdzić niestandardowe moduły i kod. Jeśli problem wynika z niestandardowego warunku i brakuje kodu, będziesz potrzebować swojego programisty Drupala, aby utworzył niestandardową implementację kodu. W idealnym przypadku kod niestandardowy powinien zostać utworzony przed migracją zawartości.
- Moduł Core/Contrib: Czasami możesz natknąć się na znany problem w swoim module głównym lub module, który ma już rozwiązanie/poprawkę. Trochę badań może pomóc to zidentyfikować. Znajdź i nałóż łatkę i powinieneś być gotowy.
- Nieaktualna wersja/biblioteki PHP: Twoja nowa witryna Drupal może nadal korzystać ze starszej wersji PHP lub bibliotek, od których zależy Twój kod. Upewnij się, że Twoja witryna zawiera najnowszą wersję PHP i innych bibliotek. Sprawdź również, czy wszystkie wymagania systemowe i konfiguracje są spełnione.
Nie można edytować stron (problemy z uprawnieniami)
- Błąd 500: Jeśli nie możesz edytować stron, ponieważ napotykasz wewnętrzny błąd serwera 500, może to być spowodowane różnymi przyczynami (błędna konfiguracja, zły kod, nieprawidłowe indeksowanie, agregacja itp.). Jednak jednym z najczęstszych powodów może być niezgodność formatów pól lub brakujące pola. Na przykład, jeśli Twoje pole daty z witryny Drupal 7 nie jest migrowane w odpowiednim formacie lub wartość nie została przekształcona do formatu Drupal 9, zgłosi błąd. Innym przykładem jest to, że w Drupalu 7 używałeś pola Obrazy, ale w Drupalu 9 zamiast tego używasz pola mediów. Najlepszym sposobem, aby to naprawić, jest poprawienie skryptu migracji w celu prawidłowego przechowywania danych. Jeśli do edycji jest tylko kilka pól, możesz również utworzyć aktualizację podpięcia.
- Błąd 403: Często błąd 403 jest spowodowany nieprawidłowym przeniesieniem uprawnień. Sprawdź, czy uprawnienia są poprawnie skonfigurowane. Jeśli używasz modułu do zarządzania użytkownikami, sprawdź, czy jest on dostępny w Drupal 9. Czasami możesz mieć hooki lub subskrybentów zdarzeń ograniczających dostęp niektórym użytkownikom. Sprawdź te warunki i upewnij się, że są one również zaimplementowane w Twojej nowej instalacji.
- Strona uprawnień nie odpowiada: Twoja witryna Drupal może implementować niestandardowy kod do obsługi uprawnień. Jeśli ten kod nie jest zaimplementowany w nowej witrynie Drupal 9, możesz nie być w stanie wyświetlić lub edytować (lub obu) strony uprawnień. Czasami zdarzają się sytuacje, w których użytkownicy byli migrowani zbiorczo bez prawidłowej migracji ich ról i profili użytkowników. Zgodnie ze standardową praktyką przed migracją uprawnień programista powinien utworzyć uprawnienia niestandardowe i przypisać je do ról z osób/uprawnień.
Nieszczęśliwa wydajność strony internetowej
- Niepotrzebne moduły: Moduły to elementy składowe Twojej witryny Drupal, więc warto je również przenieść. Czasami jednak widzimy, że przestarzałe, niepotrzebne moduły Drupala 7 zostały przeniesione do Drupala 9, co może powodować różnego rodzaju problemy. Zwłaszcza, że mogą obciążać Twoją witrynę. Oto kilka powodów, dla których nie trzeba migrować niektórych modułów:
- Moduł (lub jego funkcjonalność) został już przeniesiony do Drupal Core. Na przykład moduł wniesiony przez Media został przeniesiony do rdzenia w Drupal 8.5, co eliminuje potrzebę korzystania z wniesionego modułu.
- Jego funkcjonalność jest prosta i można ją wstawić w innym niestandardowym module. Na przykład, jeśli moduł node::postSave jest używany tylko dla jednego lub dwóch typów zawartości, aby wybrać, gdzie użytkownik powinien się udać po utworzeniu węzła, możliwe jest przeniesienie kodu do niestandardowego modułu.
- Należy ponownie ocenić wymagania dotyczące modułu. Czasami niewielka zmiana użyteczności może znacznie poprawić wydajność witryny. Na przykład, wszystkie strony internetowe nie potrzebują tak naprawdę modułu moderacji treści, chyba że zespół content marketingu jest duży i rozproszony. Podstawowe funkcje przepływu pracy redakcyjnej Drupala (szkic, publikowanie) są wystarczająco dobre, aby spełnić większość wymagań biznesowych, które nie wymagają złożonego/szczegółowego przepływu pracy.
- Czasami podmoduły są instalowane razem z modułami, ale są rzadko/nigdy używane. Takie podmoduły należy usunąć.
- Replikacja tej samej architektury: chociaż łatwiej jest po prostu podnieść, przesunąć i odkurzyć ręce z migracji, prawie nigdy nie jest to dobre podejście. Zwłaszcza jeśli starsza architektura (Drupal 6/7) była niechlujna i mniej solidna. Zmiana logiki/wymagań biznesowych może również wymagać całkowitej zmiany architektury. Dokładny audyt strony powie dokładnie, jakie moduły należy zachować, a co można bezpiecznie wyeliminować.
Integracje innych firm już nie działają
- Nieaktualna wersja interfejsu API: jeśli Twoja witryna jest połączona z różnymi narzędziami innych firm, takimi jak Salesforce, Marketo, Mailchimp itp., niewłaściwie przeprowadzona migracja może wpłynąć na działanie tych integracji. Często zdarza się, że API, którego szukasz w module integracji Drupala, jest starszą wersją. Jedyną poprawką jest to, że integracja powinna być napisana w najnowszej wersji API innej firmy.
- Problemy z modułem integracji: Musisz sprawdzić, czy zewnętrzne API są prawidłowo wywoływane w module integracji. Czy parametry są przekazywane prawidłowo? Sprawdź, jak są zakładane i pobierane. Sprawdź kolejkę problemów dla tego modułu integracji. Może być dostępna łatka, którą należy zastosować. Należy przeprowadzić odpowiednie testy, aby upewnić się, że API zostało poprawnie przeniesione do Drupala 9.
Inne typowe problemy i poprawki
- Instalacja modułów: Zawsze używaj kompozytora do instalacji modułów. Pozwoli to uniknąć błędów spowodowanych nieprawidłowymi/niedostępnymi zależnościami.
- Niezgodność źródła migracji: bez względu na to, jakie jest źródło migracji (CSV, baza danych, JSON, XML), upewnij się, że pola źródłowe są zgodne z polami docelowymi. Jeśli używasz pliku CSV jako źródła, pamiętaj o kolejności importowania – priorytet ma znaczenie przy mapowaniu typów treści.
- Ścieżki obrazów: Wiele razy użytkownicy dodają obrazy bezpośrednio w treści CKEditor. Obrazy te nie zawsze trafiają do wyznaczonej ścieżki podczas migracji, ponieważ ich lokalizacja jest zwykle inna niż lokalizacja innych plików multimedialnych. Skrupulatnie zaplanowana migracja powinna zająć się tym problemem.
- SEO: Niedbała migracja z Drupala 7 do 9 może wpłynąć na SEO Twojej witryny na wiele sposobów. Jednym z najważniejszych problemów są uszkodzone linki. Upewnij się, że istniejąca struktura adresów URL i nawigacja są zachowane, ponieważ wszelkie zmiany mogą prowadzić do wielu uszkodzonych linków. Należy przeprowadzić pełny audyt SEO, aby upewnić się, że na drodze nie ma żadnych wybojów.
- Drupal 7 Style: Często pojawiają się problemy z migracją Drupala 7 do Drupala 9 (szczególnie wydajność), ponieważ programiści używają tego samego stylu kodowania, co Drupal 7, zamiast dostosowywać się do zmian wprowadzonych przez Drupala 8. Przykłady, (a) sposób, w jaki zabijasz pamięć podręczna stron jest bardzo różna w Drupal 8. (b) Drupal 8 ma wbudowane zarządzanie konfiguracją, ale często nie jest poprawnie zaimplementowany lub utrzymywany w każdym środowisku. (c) Natknęliśmy się również na przypadki, w których projekt Drupal 8 wciąż implementuje proceduralny styl kodu.