Symfony CLI - Nouvel outil de développement local

En décembre 2018, lors de la conférence SymfonyCon de Lisbonne, Fabien Potansier - le créateur du framework Symfony a présenté un certain symfony.phar - un outil pour créer rapidement des applications Symfony basées sur les modèles de projet officiels: squelette , squelette de site Web ou démo . Il vous permet également d'exécuter un serveur Web local pour le développement.


Ensuite, l'outil a été réécrit dans le langage Golang, ce qui a permis de mettre en œuvre de nombreuses fonctionnalités supplémentaires telles que la prise en charge du protocole https pour le serveur Web local, une intégration étroite avec SymfonyCloud et plus encore! Je vous invite, cher lecteur, à vous familiariser avec cet outil plus en détail, car il ne fonctionne pas uniquement dans le cadre du framework Symfony.


Dans cet article, nous examinerons l'outil dans le contexte du développement local et n'affecterons pas l'intégration avec SymfonyCloud.


Création de projet


Pour créer un nouveau projet Symfony basé sur l'un des modèles officiels, vous devez exécuter la commande:


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

Par défaut, le modèle de squelette minimum est utilisé. Pour installer le site Web-squelette, vous devez exécuter la commande avec l'option --full . Par conséquent, pour installer le projet de démonstration , vous devez exécuter la commande avec l'option --demo .


Sous le capot, symfony new exécute la commande composer create-project , puis initialise un nouveau référentiel Git et crée immédiatement une validation initiale.


symfony nouveau


Serveur local


Pour démarrer le serveur, il suffit d'exécuter la commande à la racine de l'application


 $ symfony serve 

symfony serve


il analysera les SAPI disponibles sur la machine utilisée et choisira le meilleur parmi ceux existants, en utilisant les priorités suivantes: placez d'abord PHP FPM, puis PHP CGI et à la fin de PHP CLI. La liste des SAPI disponibles peut être consultée avec la commande:


 $ symfony local:php:list 

symfony local: php: liste


Après cela, l'équipe démarrera le serveur, qui sera disponible à l'adresse 127.0.0.1 et sélectionnera le port libre à partir de 8000 .


Par défaut, le serveur démarre de manière interactive. Nous voyons immédiatement les journaux du serveur et des applications, mais notre terminal est bloqué. Le serveur peut être démarré en mode démon. Pour ce faire, ajoutez l'option -d lors de l'exécution de la commande symfony serve .


Les journaux peuvent être consultés en exécutant la commande:


 $ symfony server:log 

Vous pouvez également voir l'état du serveur en cours d'exécution à l'aide de la commande:


 $ symfony server:status 

pour arrêter le serveur en cours d'exécution, utilisez la commande:


 $ symfony server:stop 

UPD: Auparavant, nous utilisions le paquet symfony / web-server-bundle pour démarrer le serveur. Avec l'avènement de Symfony CLI, ce package devient peu pertinent, car il ne peut démarrer le serveur qu'en utilisant PHP CLI SAPI et ne prend pas en charge HTTPS, les noms de domaine, PHP FPM SAPI, etc.


Prise en charge TLS


Certains services ou bibliothèques tiers nécessitent que vous envoyiez des demandes à l'aide du protocole HTTPS. La CLI Symfony offre la possibilité de configurer très facilement la prise en charge TLS en installant des composants supplémentaires à l'aide de la commande suivante:


 $ symfony server:ca:install 

serveur symfony: ca: install


puis redémarrez votre navigateur et le tour est joué - le support TLS est configuré! Démarrez le serveur avec la commande symfony serve et vous pouvez vous rendre sur le site en utilisant le protocole HTTPS.


Je n'aime pas vraiment ouvrir tous les projets sur https://127.0.0.1:8000 ou https://localhost:8000 , mais qu'en est-il de vous? Cela apporte son inconvénient: si plusieurs projets s'exécutent en même temps, vous devez vous rappeler sur quel port le projet fonctionne; lorsque le serveur redémarre, les ports peuvent changer, etc.


Symfony CLI résout également ce problème! Il nous fournit un serveur proxy avec lequel vous pouvez créer de beaux noms de domaine. Pour ce faire, liez le nom de domaine souhaité à notre projet à l'aide de la commande:


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

proxy symfony: domaine: attacher


ainsi, le domaine demo-project.com lié au répertoire du projet. Ensuite, nous devons démarrer le serveur proxy avec la commande:


 $ symfony proxy:start 

proxy symfony: démarrer


Nous avons lancé le serveur proxy en mode démon et il est disponible à notre adresse http://127.0.0.1:7080 , nous pouvons l'ouvrir dans un navigateur:


serveur proxy symfony


où nous verrons une liste de domaines, les chemins d'accès aux projets dans le système de fichiers et l'état du serveur pour chaque projet. Dans cette capture d'écran, vous pouvez voir que tous les serveurs sont en statut Stopped , c'est-à-dire qu'ils ne fonctionnent pas encore. L'étape suivante, nous devons ajouter ce serveur proxy dans les paramètres du système d'exploitation


Configuration du proxy macOS


Ceci termine la configuration du serveur proxy, puis vous devez démarrer le serveur avec la commande symfony serve déjà connue. En plus de l'adresse IP avec le port, nous verrons notre nom de domaine, que nous pouvons utiliser dans le navigateur! Le suffixe .wip est ajouté à tous les noms de domaine.


symfony serve


Autrement dit, dans le cas de l'utilisation du flux de serveur proxy, le lancement du projet change légèrement:


  1. Nous démarrons le serveur proxy
     $ symfony proxy:start 
  2. Nous démarrons le serveur pour l'application
     $ symfony serve 

Pour terminer le travail avec le projet, nous «reflétons» les actions décrites ci-dessus:


  1. Nous arrêtons le serveur
     $ symfony server:stop 
  2. Arrêtez le serveur proxy
     $ symfony proxy:stop 

Pour simplifier ces opérations, je recommande d'utiliser l'utilitaire GNU Make.


Changement de version PHP


Si vous utilisez différentes versions de PHP sur différents projets, vous avez probablement rencontré le problème de basculer entre les versions. Ce serait formidable d'avoir une sorte d'outil automatique pour cela, non? Symfony CLI peut résoudre ce problème! Il vous suffit de créer le fichier .php-version à la racine du projet et de spécifier la version souhaitée comme contenu.


 $ echo "7.2" > .php-version 

version php


Comme vous pouvez le voir dans la capture d'écran ci-dessus, la CLI Symfony a lu le fichier .php-version et a démarré le serveur en utilisant la version spécifiée dans ce fichier.


De plus, la CLI Symfony nous fournit un wrapper sur la CLI PHP, qui prend également en compte la version de PHP spécifiée dans le fichier .php-version. Autrement dit, si vous devez appeler des scripts de console, par exemple bin/console , utilisez-le.


 $ symfony php 

php symfony


Pour plus de commodité, vous pouvez créer un alias pour cette commande pour gagner du temps et éviter les erreurs d'écriture de la commande. Par exemple, je me suis créé un pseudonyme:


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

Symfony CLI fournit un wrapper similaire pour Composer, vous n'aurez donc aucun problème avec lui non plus. Pour plus de commodité, vous pouvez créer un alias pour ce wrapper. J'ai ce scomposer :


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

Vérifier les packages vulnérables


En prime, la CLI Symfony fournit une commande pour vérifier les packages compositeurs vulnérables dans votre projet. Vous n'avez plus besoin d'installer la dépendance Symfony Security Checker dans le projet. De plus, la documentation officielle suggère que la version intégrée à Symfony CLI fonctionne mieux car elle ne fait pas de requêtes HTTP pour l'API officielle. Vous pouvez exécuter le test avec la commande:


 $ symfony security:check 

sécurité symfony: vérifier


Conclusion


Symfony CLI est un composant assez pratique de l'infrastructure d'application locale. Il a la capacité d'exécuter un serveur Web prenant en charge le protocole HTTPS, de créer des noms de domaine, d'automatiser la commutation de la version PHP pour chaque projet et de vérifier les dépendances pour les vulnérabilités.


La documentation officielle du composant est disponible sur ce lien .
Toutes les questions et problèmes peuvent être décrits dans le dépôt officiel symfony / cli sur GitHub.


Partagez votre expérience avec cet outil dans les commentaires.


Merci de votre attention!

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


All Articles