M

Suivez vous

Magento, c’est bien (si si, et vous le pensez aussi, sinon vous ne seriez pas là !). Mais installer Magento en local pour la première fois peut vite devenir long et compliqué. Entre Nginx, Varnish, Redis, MariaDB, etc., ça fait pas mal de services à mettre en place !

Vous pourriez passer la journée à créer et peaufiner vos images Docker, configurer vos conteneurs un à un, et recommencer à chaque mise à jour (je vous sens ravi à l’idée !). Ou alors… vous utilisez Warden.

Warden ?

David Alger a publié Warden sur GitHub le 3 juin 2019 (voir ici). Son objectif est simple : vous permettre d’installer des environnements via des conteneurs Docker, rapidement et sans douleur. Aujourd’hui, Warden prend en charge plusieurs stacks : Magento 1/2, Symfony, Laravel, WordPress, etc.

Le principe est encore plus simple : vous choisissez un environnement. Warden vous génère un fichier .env. Vous renseignez vos versions. Vous lancez une commande magique… et bim. Tous vos conteneurs sont créés, et votre environnement est opérationnel.

Comment je le mets en place sur mon poste (ou dans mon équipe) ?

Warden fonctionne sous Linux, macOS et Windows. Mais sur Windows, vous devez impérativement installer WSL (Windows Subsystem for Linux).

Ensuite, installez Docker Desktop (ou Docker selon l’OS), puis Homebrew ou bien clonez le dépôt Git et rendez-le exécutable. Une fois prêt, lancez :


warden install

Et voilà, Warden est prêt sur votre machine.

Vous pouvez aussi activer la résolution automatique des DNS et générer des certificats autosignés. Je vous laisse explorer ces options selon vos besoins.

Et pour Magento, comment on fait ?

Une fois Warden installé, passons à Magento 2.

D’abord, je crée un dossier pour le projet :


mkdir -p ~/Sites/monprojet
cd ~/Sites/monprojet

J’initialise ensuite l’environnement :


warden env-init monprojet magento2

Warden génère les fichiers nécessaires, dont un fichier .env. Je signe ensuite le certificat SSL :


warden sign-certificate monprojet.test

Je vérifie que le domaine utilisé ici correspond à la variable TRAEFIK_DOMAIN dans le fichier .env.

Puis je démarre l’environnement :


warden env up

Si une erreur « Mounts denied » apparaît, suivez les instructions à l’écran. C’est souvent un souci de droits d’accès. Une fois corrigé, relancez la commande.

Ensuite, je rentre dans le conteneur PHP :


warden shell

Avant de récupérer Magento, je configure Composer avec mes identifiants Marketplace :


composer global config http-basic.repo.magento.com <public_key> <private_key>

Je télécharge Magento :


composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /tmp/magento2 2.4.6

Puis je copie les fichiers dans le dossier web :


rsync -a /tmp/magento2/ /var/www/html/
rm -rf /tmp/magento2/

Et enfin, je lance l’installation :


bin/magento setup:install \
--base-url=https://app.monprojet.test/ \
--db-host=db \
--db-name=magento \
--db-user=magento \
--db-password=magento \
--backend-frontname=admin \
--admin-firstname=Admin \
--admin-lastname=User \
--admin-email=admin@monprojet.test \
--admin-user=admin \
--admin-password=Admin123! \
--amqp-host=rabbitmq \
--amqp-port=5672 \
--amqp-user=guest \
--amqp-password=guest \
--search-engine=opensearch \
--opensearch-host=opensearch \
--opensearch-port=9200 \
--opensearch-index-prefix=magento2 \
--opensearch-enable-auth=0 \
--opensearch-timeout=15 \
--session-save=redis \
--session-save-redis-host=redis \
--session-save-redis-port=6379 \
--session-save-redis-db=2 \
--cache-backend=redis \
--cache-backend-redis-server=redis \
--cache-backend-redis-db=0 \
--cache-backend-redis-port=6379 \
--page-cache=redis \
--page-cache-redis-server=redis \
--page-cache-redis-db=1 \
--page-cache-redis-port=6379

Et voilà. Magento tourne en local dans un environnement propre, stable et reproductible.

Pour conclure

Grâce à Warden, on oublie les galères d’installation à rallonge et on peut se concentrer sur l’essentiel : coder. Oui, il y a un peu de configuration au départ, mais franchement, vu le confort derrière, c’est un excellent investissement de temps.

meme warden

Maintenant que tout tourne en local, il ne vous reste plus qu’à sortir meilleure IDE (#team word pour ma part, comme tout les ninjas dev !), prévoir quelques litres tasses de café… et développer sereinement.