Cursos Magento

Magento local: simples e rápido com Warden

, ,

Publicado em 08 de novembro de 2022

Você conhece o Warden?

Faça o setup da sua aplicação Magento 2 em apenas alguns minutos e evite dores de cabeça com a configuração do seu ambiente de programação.

Meu primeiro contato com o Warden

Particularmente, prefiro configurar os ambientes de programação que utilizo. Esta é uma mania que adquiri desde os meus primeiros anos trabalhando por conta própria, pois metade dos problemas de ambientes que eu encontrava nos chamados de clientes eram relacionados a infra estrutura reaproveitada de algum projeto mais robusto, sem a devida reconfiguração dos serviços. Mas isto é outra história, agora vamos falar de quando conheci o Warden.

Pois bem. Recentemente comecei a trabalhar para uma nova empresa, após concluir uma extraordinária experiência profissional no Magenteiro, diga-se de passagem. Nesta empresa, um projeto baseado no Docker Compose é disponibilizado para que todos tenham o mesmo ambiente de desenvolvimento, ou quase isso.

Um dado dia, tive que trabalhar em uma tarefa de um projeto com versões não tão atualizadas do Magento e do PHP e tive problemas para configurar o Xdebug para depurar as rotinas disparadas via linha de comando. Foi então que lembrei de um programa que um colega o qual eu ajudo de vez em quanto costuma utilizar: o Warden (este é nome do programa, não do colega). Assim como outros programadores na empresa, este colega teve problemas ao configurar o projeto Docker disponibilizado e utilizava este recurso pra rodar as lojas do cliente.

A fim de resolver o problema, marquei uma chamada com este camarada no Slack e, após alguns minutos, meu projeto estava configurado e funcionando, com Xdebug e todo o resto. E este é o poder desta ferramenta: não exige conhecimento prévio de diversos detalhes de implementação para levantar um projeto Magento.

Instalação

Não irei cobrir a instalação do Warden aqui e peço perdão por isso. Mas o motivo é razoável: uma das razões minhas ao sugerir este software é que ele funciona em Linux, Mac e Windows. Portando, a documentação do próprio Warden possuirá instruções muito melhores do que eu poderia prover:

Como iniciar um projeto?

Esta é a parte emocionante. Alguns poucos passos, mais um pouquinho de bla bla bla e seu Magento está pronto pra vender! Okay, me empolguei um pouco. É uma instalação local: seu Magento estará para pronto para ser customizado e receber as novas funcionalidades que você irá desenvolver.

Inicialmente, em uma pasta de sua escolha para ser a raiz do seu projeto, digite:

warden env-init magenteiro magento2

Neste caso, magenteiro é o nome do nosso projeto de exemplo. Você pode trocar este nome por qualquer outro de sua preferência.

Após digitar o comando, nenhuma mensagem aparecerá. Nada tão eloquente ocorrerá. Isto é um pouco preocupante, mas se você conferir a pasta na qual digitou este comando, um arquivo terá sido criado com o nome .env. O conteúdo deverá ser algo parecido com as informações a seguir:

WARDEN_ENV_NAME=magenteiro
WARDEN_ENV_TYPE=magento2
WARDEN_WEB_ROOT=/

TRAEFIK_DOMAIN=magenteiro.test
TRAEFIK_SUBDOMAIN=app

WARDEN_DB=1
WARDEN_ELASTICSEARCH=1
WARDEN_VARNISH=1
WARDEN_RABBITMQ=1
WARDEN_REDIS=1

ELASTICSEARCH_VERSION=7.6
MARIADB_VERSION=10.3
NODE_VERSION=10
COMPOSER_VERSION=1
PHP_VERSION=7.4
PHP_XDEBUG_3=1
RABBITMQ_VERSION=3.8
REDIS_VERSION=5.0
VARNISH_VERSION=6.0

WARDEN_SYNC_IGNORE=

WARDEN_ALLURE=0
WARDEN_SELENIUM=0
WARDEN_SELENIUM_DEBUG=0
WARDEN_BLACKFIRE=0
WARDEN_SPLIT_SALES=0
WARDEN_SPLIT_CHECKOUT=0
WARDEN_TEST_DB=0
WARDEN_MAGEPACK=0

BLACKFIRE_CLIENT_ID=
BLACKFIRE_CLIENT_TOKEN=
BLACKFIRE_SERVER_ID=
BLACKFIRE_SERVER_TOKEN=

Estas variáveis são bem auto explicativas. A maioria são flags indicando se os softwares serão instalados no projeto ou a versão de cada recurso. Por exemplo, WARDEN_VARNISH=1 indica que o Varnish será utilizado no projeto e VARNISH_VERSION=6.0 determina a versão deste software a ser instalada.

Eu gostaria de chamar a atenção para uma variável que sempre altero, para não perder minha mania de fução:

WARDEN_WEB_ROOT=/

A variável WARDEN_WEB_ROOT indica a pasta raiz da instalação do Magento. Eu sempre altero o valor desta variável para /src, com o propósito de mover meus arquivos do Magento para uma pasta separada (neste caso src) e não ter problemas com o Git, além de organizar melhor minha aplicação.

Um breve comentário sobre a variável WARDEN_ENV_TYPE: ela indica que o projeto é para uma aplicação Magento 2, porque o Warden também prepara aplicações para outras framework’s como Magento 1, Laravel, Symfony e Shopware. Pretensioso, eu diria.

Uma alteração que é importante realizar diz respeito às versões dos softwares. Vamos considerar uma instalação do Magento 2.4.5. As versões ficariam assim:

ELASTICSEARCH_VERSION=7.17
MARIADB_VERSION=10.4
NODE_VERSION=10
COMPOSER_VERSION=2
PHP_VERSION=8.1
PHP_XDEBUG_3=1
RABBITMQ_VERSION=3.9
REDIS_VERSION=6.2
VARNISH_VERSION=7.0

Se ficar na dúvida das versões para uma nova instalação, consulte https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/system-requirements.html

Para criar os containers do seu projeto (ou ambiente, como o Warden gosta de chamar), digite o seguinte comando a partir da mesma pasta onde está o seu arquivo .env:

warden env up

Certifique-se que os containers do serviço Warden estejam rodando:

warden svc start

Também, certifique-se de que o arquivo hosts do seu sistema possua o apontamento de magenteiro.test para o IP 127.0.0.1.

127.0.0.1 ::1 magenteiro.test

Agora basta acessar https://magenteiro.test/ e receber um 404 do Nginx.

Página 404 depois de instalar o Warden

Isto significa que o ambiente está pronto e só falta instalar e configurar o Magento. Caso você não tenha instalado o Magento ainda, veja como fazê-lo neste post . Caso tenha um projeto, com arquivos e banco de dados prontos, basta importar tudo e rodar o bin/magento setup:upgrade.

Para acessar o container em que o PHP está instalado e rodarmos os comandos do Magento (bin/magento), devemos digitar o seguinte comando a partir da pasta em que o arquivo .env se encontra:

warden shell

Ainda, a página a seguir possui diversos comandos úteis realizar tarefas, como importar um dump do banco de dados e limpar o cache do Varnish: https://docs.warden.dev/usage.html

Baixando o Magento

Para ninguém falar que deixei o processo (ainda mais) incompleto, irei simular instalar uma nova instância do Magento 2.4.5. Vamos começar abrindo o bash do container PHP:

warden shell

Criando o projeto e baixando arquivos base (comando ser digitado a partir do bash do container):

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

Caso sejam requeridas as credenciais, forneça as chaves de desenvolvedor, como instruído neste artigo.

Instalando o Magento propriamente dito (também deve ser executado no bash do container):

bin/magento setup:install \
--base-url=https://magenteiro.test \
--db-host=db \
--db-name=magento \
--db-user=magento \
--db-password=magento \
--admin-firstname=admin \
--admin-lastname=admin \
[email protected] \
--admin-user=admin \
--admin-password=admin123 \
--language=pt_BR \
--currency=BRL \
--timezone=America/Sao_Paulo \
--use-rewrites=1 \
--search-engine=elasticsearch7 \
--elasticsearch-host=elasticsearch \
--elasticsearch-port=9200 \
--elasticsearch-index-prefix=magento2 \
--elasticsearch-timeout=15 \
--amqp-host=rabbitmq \
--amqp-port=5672 \
--amqp-user=guest \
--amqp-password=guest \
--amqp-virtualhost=/ \
--cache-backend=redis \
--cache-backend-redis-server=redis \
--cache-backend-redis-port=6379 \
--page-cache-redis-server=redis \
--page-cache-redis-port=6379 \
--session-save=redis \
--session-save-redis-host=redis \
--session-save-redis-port=6379

Agora, finalize a execução do bash do container (utilizando o comando exit) e a partir da pasta onde está o arquivo .env do projeto, dê aquele tapa na cara do Varnish, pois ele deve ter cacheado a página de 404 🥊:

warden env exec -T varnish varnishadm 'ban req.url ~ .'

E voilà! Aí está o seu Magentão:

https://magenteiro.test

Home do Magento com Warden

Conclusão

Existem diversas coisas interessantes para se falar do Warden, como a possibilidade de rodar diversos projetos Magento simultaneamente (se a sua máquina for valente o suficiente), sem conflito de portas e container’s, além da facilidade em configurar o Xdebug e outras ferramentas.

Achei bem interessante o fato deste software ter me ajudado (usuário Linux) e também ser de igual utilidade para outros usuários em sistemas operacionais Mac e Windows na mesma empresa. Continuo sendo uma pessoa que prefere criar seus próprios Dockerfile’s, mas quando preciso de agilidade, recorro ao Warden.

Indo além

Seguem alguns links interessantes da Wiki do Warden:

Configurar Xdebug: https://docs.warden.dev/configuration/xdebug.html

Configurar conexão com o banco: https://docs.warden.dev/configuration/database.html

Magento multi loja: https://docs.warden.dev/configuration/multipledomains.html

Configurações em geral: https://docs.warden.dev/configuration.html

Customizando o seu ambiente: https://docs.warden.dev/environments/customizing.html

Últimos posts por Fillipe Dutra (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/magento-local-com-warden/"]