Magento 2 deploy modes mają wpływ  na to jak serwowane są pliki statyczne takie jak CSS, obrazki i skrypty JavaScript. Poza tym raportowanie błędów działa inaczej w różnych trybach. W tym artykule postaram Ci się przybliżyć jakie są różnice pomiędzy poszczególnymi trybami.

Deploy modes w Magento 2:

  • default
  • developer
  • production

Dodatkowo jest jeszcze maintenance mode, ale on działa w inny sposób niż trzy wymienione wyżej tryby – po prostu  blokuje dostęp do systemu np. podczas aktualizacji lub prac konserwacyjnych na serwerze.

Pliki statyczne

Zanim zacznę opisywać poszczególne tryby chciałem wyjaśnić Ci o co chodzi z tymi plikami statycznymi.

Weźmy dla przykładu plik:

Magento/Wishlist/view/frontend/web/wishlist.js

W zależności od tego jak masz zainstalowane Magento może o się znajdować w app/code lub w katalogu vendor.

Można powiedzieć, że jest to plik – źródło. Sprawdzając w przeglądarce można zobaczyć, że plik pobierany jest z folderu pub/static. Jego dokładna lokalizacja to:

pub/static/version1489917438/frontend/Magento/luma/en_US/Magento_Wishlist/js/view/wishlist.js 

w wersji Magento poniżej 2.1.3 byłoby to

pub/static/frontend/Magento/luma/en_US/Magento_Wishlist/js/view/wishlist.js 

magento 2 deploy modes - static content

Spytasz pewnie skąd to się bierze. Poniżej szybkie wyjaśnienie

  • http://127.0.0.1:32778 – nazwa hosta
  • pub/static – folder plików statycznych
  • version1489917438 – numer wersji plików statycznych
  • frontend – area –  w tym przypadku frontend, ponieważ plik pochodzi z Magento/view/frontend
  • luma – nazwa szablonu – zmienia się gdy zmieniamy aktywny szablon
  • en_US – nazwa lokalizacji – odpowiada wybranej lokalizacji sklepu. jeśli masz multistore z kilkoma językami to każdy będzie miał swój folder ze statycznymi plikami np. pl_PL

Jak widzisz Magento przenosi pliki z modułów ( i z szablonów) w odpowiednie miejsce do folderów pub/static.  W zależności od wybranego deploy mode odbywa się to w inny sposób.

Developer mode

Tego trybu używaj zawsze kiedy prowadzisz development. Najważniejsze cechy trybu developerskiego:

  • pliki statyczne są budowane w locie (poprzez symlinki)
  • nieobsłużone wyjątki są wyświetlane w przeglądarce
  • System loguje bardzo szczegółowo do katalogu var/report

Trybu developer nie należy używać w środowisku produkcyjnym, ponieważ znacząco spowalnia on działanie Magento

Tryb developerski oprócz wyświetlania  błędów zmienia sposób generowania plików statycznych. Zamiast kopiowania ich do folderu pub są robione symlinki przy każdym zapytaniu o plik. Spowalnia to znacząco działanie Magento, ale dzięki temu np. przy każdej zmianie w pliku JavaScript zobaczysz tą zmianę w przeglądarce bez konieczności uruchomiania static content deploymentu. 

Production mode

Tryb produkcyjny zapewnia największą wydajność Magento oraz ukrywa raportowanie błędów w przeglądarce. Tego trybu należy używać na serwerach produkcyjnych.

Najważniejsze cechy trybu produkcyjnego:

  • wyjątki nie są pokazywane w przeglądarce tylko logowane do plików
  • pliki statyczne są kopiowane do folderu pub/static specjalną komendą bin/magento setup:static-content:deploy. Każda zmiana w plikach statycznych wymaga uruchomienia tej komendy ponownie

Tryb produkcyjny nie nadaje się do developmentu.

Default mode

Default mode to standardowy tryb, który jest ustawiony po instalacji Magento. jeśli chcesz pisać jakiś kod to czym prędzej zmień tryb na developer. Tryb ten tez nie jest rekomendowany na produkcję ponieważ wydajność jest mniejsza niż w trybie produkcyjnym.

Najważniejsze cechy tego trybu:

  • wyjątki są logowane do plików
  • pliki statyczne są robione w locie i cache’owane

Zmiana trybu

Zmienić tryb możemy na kilka sposobów:

  • za pomocą zmiennych środowiskowych
  • za pomocą web servera np. .htaccess
  • za pomocą magento-cli

Dzisiaj pokażę Ci ten ostatni sposób.

Zmiana trybu za pomocą magento-cli

Po zalogowaniu się na serwer przez SSH przejdź do głównego katalogu magento. Aby sprawdzić jaki tryb jest aktualnie ustawiony wpisz komendę:

Aby zmienić tryb na inny użyj komendy:

np.

Musisz pamiętać, że jeśli tryb był wcześniej zmieniany/ustawiany za pomocą zmiennych środowiskowych to nie zmienisz trybu poprzez magento-cli, ponieważ zmienne środowiskowe mają kolokwialnie mówiąc większą siłę.

Magento 2 deploy modes  – podsumowanie

Dzisiaj przybliżyłem CI temat Magento 2 deploy modes. Jeśli masz jakieś jakieś pytania to wal śmiało w komentarzach. Zachęcam też do zapoznania się z oficjalną dokumentacją.

Miłego dnia! 🙂

Share on FacebookTweet about this on TwitterShare on LinkedIn