Symfony CLI - Nova ferramenta de desenvolvimento local

Em dezembro de 2018, na conferência SymfonyCon de Lisboa, Fabien Potansier - o criador do framework Symfony introduziu um certo symfony.phar - uma ferramenta para criar rapidamente aplicativos Symfony com base nos modelos oficiais de projeto: esqueleto , esqueleto de site ou demonstração . Também permite que você execute um servidor da web local para desenvolvimento.


Em seguida, a ferramenta foi reescrita no idioma Golang, o que permitiu implementar muitos recursos adicionais, como suporte ao protocolo https para o servidor da web local, forte integração com o SymfonyCloud e muito mais! Convido você, caro leitor, a se familiarizar com essa ferramenta com mais detalhes, pois ela funciona não apenas no contexto da estrutura do Symfony.


Neste artigo, examinaremos a ferramenta no contexto do desenvolvimento local e não afetará a integração com o SymfonyCloud.


Criação de projeto


Para criar um novo projeto Symfony baseado em um dos modelos oficiais, você precisa executar o comando:


$ symfony new [--full | --demo] <path-to-project> 

Por padrão, o modelo mínimo de esqueleto é usado. Para instalar o website-skeleton, você precisa executar o comando com a opção --full . Portanto, para instalar o projeto demo , você deve executar o comando com a opção --demo .


Sob o capô, o symfony new executa o comando composer create-project do composer create-project , inicializa um novo repositório Git e cria imediatamente um commit inicial.


symfony new


Servidor local


Para iniciar o servidor, basta executar o comando na raiz do aplicativo


 $ symfony serve 

serviço symfony


ele analisará os SAPIs disponíveis na máquina usada e escolherá o melhor dentre os existentes, usando as seguintes prioridades: primeiro coloque o PHP FPM, depois o PHP CGI e no final da PHP CLI. A lista de SAPIs disponíveis pode ser visualizada com o comando:


 $ symfony local:php:list 

symfony local: php: list


Depois disso, a equipe iniciará o servidor, que estará disponível no endereço 127.0.0.1 e selecionará a porta livre a partir de 8000 .


Por padrão, o servidor inicia interativamente. Vemos imediatamente os logs do servidor e do aplicativo, mas nosso terminal está bloqueado. O servidor pode ser iniciado no modo daemon. Para fazer isso, adicione a opção -d ao executar o comando symfony serve .


Os logs podem ser visualizados executando o comando:


 $ symfony server:log 

Você também pode ver o status do servidor em execução usando o comando:


 $ symfony server:status 

para parar o servidor em execução, use o comando:


 $ symfony server:stop 

UPD: Anteriormente, usamos o pacote symfony / web-server-bundle para iniciar o servidor. Com o advento da CLI do Symfony, este pacote se torna pouco relevante, pois só pode iniciar o servidor usando o PHP CLI SAPI e não suporta HTTPS, nomes de domínio, PHP FPM SAPI e muito mais.


Suporte TLS


Alguns serviços ou bibliotecas de terceiros exigem que você envie solicitações usando o protocolo HTTPS. A CLI do Symfony oferece a capacidade de configurar muito facilmente o suporte ao TLS instalando componentes adicionais usando o seguinte comando:


 $ symfony server:ca:install 

servidor symfony: ca: install


basta reiniciar o navegador e pronto - o suporte ao TLS está configurado! Inicie o servidor com o comando symfony serve e você pode acessar o site usando o protocolo HTTPS.


Não gosto de abrir todos os projetos em https://127.0.0.1:8000 ou https://localhost:8000 , mas e você? Isso traz seu inconveniente: se vários projetos estão sendo executados ao mesmo tempo, você precisa lembrar em qual porta o projeto trabalha; quando o servidor reinicia, as portas podem mudar etc.


O Symfony CLI também resolve esse problema! Ele nos fornece um servidor proxy com o qual você pode criar belos nomes de domínio. Para fazer isso, vincule o nome de domínio desejado ao nosso projeto usando o comando:


 $ symfony proxy:domain:attach <domain-name> 

proxy symfony: domínio: anexar


portanto, o domínio demo-project.com vinculado ao diretório do projeto. Em seguida, precisamos iniciar o servidor proxy com o comando:


 $ symfony proxy:start 

proxy symfony: início


Iniciamos o servidor proxy no modo daemon e ele está disponível em nosso endereço http://127.0.0.1:7080 , podemos abri-lo em um navegador:


servidor proxy symfony


onde veremos uma lista de domínios, caminhos para projetos no sistema de arquivos e status do servidor para cada projeto. Nesta captura de tela, você pode ver que todos os servidores estão no status Stopped , ou seja, eles ainda não estão em execução. A próxima etapa, precisamos adicionar este servidor proxy nas configurações do SO


Configuração de proxy do macOS


Isso completa a configuração do servidor proxy e, em seguida, você precisa iniciar o servidor com o comando symfony serve já conhecido. Além do endereço IP com a porta, veremos nosso nome de domínio, que podemos usar no navegador! O postfix .wip é adicionado a todos os nomes de domínio.


serviço symfony


Ou seja, no caso de usar o fluxo do servidor proxy, o lançamento do projeto muda ligeiramente:


  1. Iniciamos o servidor proxy
     $ symfony proxy:start 
  2. Iniciamos o servidor para o aplicativo
     $ symfony serve 

Para concluir o trabalho com o projeto, espelhamos as ações descritas acima:


  1. Paramos o servidor
     $ symfony server:stop 
  2. Pare o servidor proxy
     $ symfony proxy:stop 

Para simplificar essas operações, eu recomendo usar o utilitário GNU Make.


Troca de versão do PHP


Se você usa versões diferentes do PHP em projetos diferentes, provavelmente enfrentou o problema de alternar entre versões. Seria ótimo ter algum tipo de ferramenta automática para isso, certo? O Symfony CLI pode resolver este problema! Você só precisa criar o arquivo .php-version na raiz do projeto e especificar a versão desejada como o conteúdo.


 $ echo "7.2" > .php-version 

versão php


Como você pode ver na captura de tela acima, a CLI do Symfony leu o arquivo .php-version e iniciou o servidor usando a versão especificada neste arquivo.


Além disso, a CLI do Symfony fornece um wrapper sobre a CLI do PHP, que também leva em consideração a versão do PHP especificada no arquivo .php-version. Ou seja, se você precisar chamar scripts de console, por exemplo bin/console , use-o.


 $ symfony php 

symfony php


Por conveniência, você pode criar um alias para esse comando para economizar tempo e evitar erros ao escrever o comando. Por exemplo, criei um alias sphp para mim:


 $ echo "alias sphp='symfony php'" >> ~/.bash_profile && source ~/.bash_profile 

O Symfony CLI fornece um wrapper semelhante para o Composer, para que você também não tenha problemas. Por conveniência, você pode criar um alias para este wrapper. Eu tenho este compositor :


 $ echo "alias scomposer='symfony composer'" >> ~/.bash_profile && source ~/.bash_profile 

Verifique se há pacotes vulneráveis


Como um bônus, a CLI do Symfony fornece um comando para verificar se há pacotes vulneráveis ​​do compositor em seu projeto. Você não precisa mais instalar a dependência do Symfony Security Checker no projeto. Além disso, a documentação oficial sugere que a versão incorporada na CLI do Symfony funciona melhor devido ao fato de não fazer solicitações HTTP para a API oficial. Você pode executar o teste com o comando:


 $ symfony security:check 

symfony security: verifique


Conclusão


O Symfony CLI é um componente bastante conveniente da infraestrutura local de aplicativos. Ele tem a capacidade de executar um servidor Web com suporte para o protocolo HTTPS, criar nomes de domínio, automatizar a alternância da versão PHP para cada projeto e verificar dependências quanto a vulnerabilidades.


A documentação oficial do componente pode ser encontrada neste link .
Qualquer dúvida e problema pode ser descrito no repositório oficial symfony / cli no GitHub.


Compartilhe sua experiência com esta ferramenta nos comentários.


Obrigado pela atenção!

Source: https://habr.com/ru/post/pt451138/


All Articles