Magento 2 tryby działania aplikacji
W zależności od ustawienia aplikacja Magento 2 może działać w jednym z dostępnych trybów: default, developer, production oraz maintenance. Każdy z dostępnych trybów ma swoje konkretne zastosowanie podczas rozwoju aplikacji. Na początek wyjaśnię, co to jest kompilacja kodu, pliki statyczne oraz jak to działa w poszczególnych trybach działania aplikacji.
Generowane pliki
W pewnym stopniu Magento 2 generuje dla nas pewne zestawy plików, aby usprawnić proces pisania aplikacji jak i również przyśpieszyć jej działanie.
Komplikacja kodu
Komplikacja kodu obejmuje
- Generowanie kodu aplikacji (klas fabryk i proxy),
- Agregacja konfiguracji na obszar (zoptymalizowane konfiguracja wstrzykiwania zależności na obszar),
- Generowanie klas interceptor (zoptymalizowany kod generujący klas interceptor),
- Generowanie cache dla klas interceptor,
- Generowanie kodu repozytoriów (generowany kod dla interfejsów API),
- Generowanie atrybutów danych dla serwisu (generowanie klas rozszerzeń dla obiektów danych).
Klasy, które odpowiadają za kompilację, możemy znaleźć w przestrzeni Magento\Setup\Module\Di\App\Task\Operation.
W celu ręcznego uruchomienia kompilacji wykonujemy poniższą komendę:
1 |
bin/magento setup:di:compile |
Pliki statyczne
Pliki statyczne, określane tutaj w Magento 2 jako static view file. Są to pliki, które są generowane dla warstwy widoku i mogą być one cache’owane dla strony (nie są więc generowany dynamicznie). Przykładami są obrazki i kod CSS generowany na podstawie LESS.
Pliki statyczne przechowywane są w katalogu pub/static. Niektóre z nich są cache’owane w katalogu var/view_preprocessed.
W celu wygenerowania dla projektów plików statycznych potrzebujemy użyć poniższego polecenia w konsoli:
1 |
bin/magento setup:static-content:deploy |
Samo polecenie ma dużą ilość dostępnych opcji, które opisane znajdziemy w dokumentacji.
Tryb default
Tryb default umożliwia wdrożenie aplikacji na jednym serwerze bez zmiany jakichkolwiek ustawień. Ten ryb działania nie jest zoptymalizowany pod kątem produkcyjnym, a to ze względu na niekorzystny wpływ plików statycznych na wydajność, które generowane są dynamicznie.
W trybie default:
- Błędy logowane są do pliku dziennika, w var/report,
- Pliki statyczne tworzone są dynamicznie, zmiany są zapisane w pamięci podręcznej,
- Ukrywa niestandardowe nagłówki żądań X-Magento-* i nagłówki odpowiedzi.
Magento działa w trybie default, jeśli nie określono innego trybu. Jeśli ustawimy inny tryb, nie można przełączyć się z powrotem w tryb default.
Tryb developer
Trybu tego używamy podczas pracy nad modyfikacją Magento. Pliki statyczne nie są cache’owane, ale generowane na żądanie w katalogu pub/static.
W trybie developer:
- Włącza automatyczną kompilację kodu,
- Lepsze możliwości debugowania,
- Nieprzechwycone wyjątki wyświetli na stronie,
- Dziennik błędów w var/report jest szczegółowy,
- Wyjątek jest wyrzucany w przypadku niemożliwości wywoływania subskrybenta zdarzenia,
- obsługa błędów — wyrzuca wyjątek, zamiast logować błędy (na przykład błędy typu notice).
Tryb production
Tryb production oczywiście jest najlepszy do wdrożenia aplikacji w systemie produkcyjnym. Po zoptymalizowaniu środowiska serwera, takiego jak bazy danych i serwer WWW, należy uruchomić narzędzie do wdrażania plików statycznych, aby wygenerować, już gotowe do użytku pliki w katalogu pub/static. Brak konieczności generowania plików za każdym razem na żądanie poprawia wydajność aplikacji.
Niektóre rodzaje konfiguracji systemu, tak jak na przykład Stores ⮞ Configuration ⮞ Advanced ⮞ Developer w adminie, nie są dostępne w trybie production. Innym przykładem jest brak możliwości włączenia ani wyłączenia typów cache, zmiany możemy dokonać jedynie za pomocą komendy z konsoli.
W trybie production:
- Pliki statyczne są serwowane tylko z pamięci cache,
- Błędy i wyjątki są rejestrowane w systemie plików i nigdy nie są wyświetlane użytkownikowi,
- Niektóre pola konfiguracyjne w panelu administracyjnym są niedostępne,
- Po wygenerowaniu plików statycznych, katalog pub/static można ustawić go tylko do odczytu.
Tryb maintenance
Tryb maintenance ogranicza lub uniemożliwia dostęp do witryny podczas wdrażania ulepszeń, aktualizacji czy zmian konfiguracyjnych. Domyślnie witryna przekierowuje odwiedzających na stronę Usługa tymczasowo niedostępna (ang. Service Temporarily Unavailable).
Magento daje nam możliwość:
- utworzenia niestandardowej strony maintenance,
- ręcznego włączenia/wyłączenia trybu maintenance,
- ustawienia konfiguracji, aby odwiedzający z autoryzowanym IP mógł przeglądać stronę.
W trybie maintenance:
- Użytkownicy są przekierowani do strony Usługa tymczasowo niedostępna (ang. Service Temporarily Unavailable),
- Katalog var/ posiada plik .maintenance.flag,
- Można ograniczyć dostęp odwiedzających stronę, na podstawie adresu IP.
Zmiana trybu działania
Magento 2 udostępnia nam do pracy parę poleceń.
W celu sprawdzenia, w jakim trybie obecnie pracuje Magento 2, wykonaj polecenie:
1 |
bin/magento deploy:mode:show |
W celu zmienienia obecnego trybu pracy w Magento 2, na przykład na tryb developer, wykonaj poniższe polecenie:
1 |
bin/magento deploy:mode:set developer |
Powyższe polecenie możemy jeszcze wykonać z opcją –skip-compilation, aby pominąć generowanie kodu, procesowania plików CSS i assetów w katalogu pub/static/. Opcja przydatna, gdy podczas przełączania się na tryb production nie chcemy generować plików.
W przypadku przełączania się na tryb developer warto również usunąć zawartość katalogów generated/code i generated/metadata:
1 |
rm -rf <magento_root>/generated/metadata/* <magento_root>/generated/code/* |
Szczegóły na temat ustawień trybu maintenance są dostępne na tej stronie.
Tworzenie nowego modułu w Magento 2 - Web Programming
20 grudnia 2023 @ 22:49
[…] ustawić tryb developer, należy […]