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