Warden & Magento 2

Trainer: Łukasz Bajsarowicz

Magento Developer for

Bazowa Konfiguracja

- Wszystkie projekty dostępne pod domeną *.test

- Serwer poczty mailhog.warden.test

- ElasticSearch elasticsearch.{ domena }.test

Przechwytywanie e-maili

Rozszerzanie
Funckjonalności

warden env config pozwala na podejrzenie docker-compose.yml

Podgląd bieżących ustawień

...
services:
  db:
    command:
    - mysqld
    - --max_allowed_packet=1024M
    - --explicit_defaults_for_timestamp=on
    environment:
      MYSQL_DATABASE: magento
      MYSQL_PASSWORD: magento
      MYSQL_ROOT_PASSWORD: magento
      MYSQL_USER: magento
...

Konfigurowalne za pomocą .warden/warden-env.yml,
np. dodanie dodatkowego środowiska Selenium + Chrome:

Dodatkowe usługi

version: "3.5"
services:
  selenium-chrome:
    hostname: ${WARDEN_ENV_NAME}_selenium-chrome
    image: selenium/standalone-chrome${WARDEN_SELENIUM_DEBUG:-}:3.8.1
    extra_hosts:
      - ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0}
    environment:
      - START_XVFB=false

Zmiana pliku z ustawieniami Nginx czy PHP?
Konfiguracja kontenera w pliku .warden/warden-env.yml

Zmiana ustawień

version: "3.5"
services:
  nginx:
    hostname: "${WARDEN_ENV_NAME}-nginx"
    image: docker.io/wardenenv/nginx:${NGINX_VERSION:-1.16}
    environment:
      - NGINX_TEMPLATE=static.conf
    volumes:
      - ./.warden/etc/static.conf:/etc/nginx/available.d/static.conf
      - .${WARDEN_WEB_ROOT:-}/:/var/www/html:delegated

Dodaj plik do ścieżki .warden/commands/{ command }.cmd

Własne komendy

#!/usr/bin/env bash
[[ ! ${WARDEN_DIR} ]] && >&2 echo -e "\033[31mThis script is not intended to be run directly!\033[0m" && exit 1
set -euo pipefail

function :: {
  echo
  echo "==> [$(date +%H:%M:%S)] $@"
}

## load configuration needed for setup
WARDEN_ENV_PATH="$(locateEnvPath)" || exit $?
loadEnvConfig "${WARDEN_ENV_PATH}" || exit $?
assertDockerRunning

...

Uruchamianie
Projektu

1. Stworzenie nowego folderu

2. Zainicjalizowanie projektu warden env-init {nazwa} magento2

3. Uruchomienie projektu warden env up -d

4. Konfiguracja danych dostępowych Marketplace

5. Instalacja pakietów za pomocą Composer

Nowy Projekt

https://docs.warden.dev/environments/initializing.html

1. Skopiowanie plików

2. Zainicjalizowanie projektu warden env-init {nazwa} magento2

3. Uruchomienie projektu warden env up -d

4. Konfiguracja danych dostępowych Marketplace

5. Instalacja pakietów za pomocą Composer

6. Import bazy danych pv dump.sql.gz | gunzip -c | warden db import

 

Istniejący Projekt

Wersje oprogramowania i dodatkowe funkcjonalności

konfigurowane są za pośrednictwem pliku .env

Konfiguracja środowiska

https://docs.warden.dev/environments/customizing.html

- Zgodność wersji PHP, MySQL i Elasticsearch

- Ustawienia Varnish i Magento Full Page Cache

- Typ cache i jego konfiguracja (np. Redis)

- Sposób przechowania sesji

Sprawdź koniecznie

Wszystkie powyżej wspomniane elementy powinny być tożsame
ze środowiskiem produkcyjnym

Praca w
Środowisku Warden

warden shell - SSH do kontenera PHP

warden debug - SSH do kontenera PHP z Xdebug

Połączenie SSH

W razie konieczności połączenia do innych usług

warden env exec redis sh -c "redis-cli flushall"

Interaktywna konsola MySQL: warden db connect

Połączenie z bazą

https://docs.warden.dev/configuration/database.html

Przeglądanie logów

https://docs.warden.dev/configuration/database.html

Logi Magento (var/log) nie zawierają błędów krytycznych PHP,
dlatego czasem należy "słuchać" logów PHP:
warden env logs --tail 0 -f nginx php-fpm php-debug

Magento 2 and Warden

By Łukasz Bajsarowicz

Magento 2 and Warden

  • 41