Symfony CLI - Neues lokales Entwicklungstool

Im Dezember 2018 stellte Fabien Potansier - der Erfinder des Symfony-Frameworks - auf der SymfonyCon-Konferenz in Lissabon eine bestimmte symfony.phar vor - ein Tool zum schnellen Erstellen von Symfony-Anwendungen auf der Grundlage der offiziellen Projektvorlagen: Skelett , Website-Skelett oder Demo . Außerdem können Sie einen lokalen Webserver für die Entwicklung ausführen.


Anschließend wurde das Tool in der Sprache Golang neu geschrieben, wodurch viele zusätzliche Funktionen implementiert werden konnten, z. B. die Unterstützung des https-Protokolls für den lokalen Webserver, die enge Integration in SymfonyCloud und vieles mehr! Ich lade Sie, lieber Leser, ein, sich mit diesem Tool genauer vertraut zu machen, da es nicht nur im Kontext des Symfony-Frameworks funktioniert.


In diesem Artikel werden wir das Tool im Kontext der lokalen Entwicklung betrachten und die Integration in SymfonyCloud nicht beeinflussen.


Projekterstellung


Um ein neues Symfony-Projekt basierend auf einer der offiziellen Vorlagen zu erstellen, müssen Sie den folgenden Befehl ausführen:


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

Standardmäßig wird die minimale Skelettvorlage verwendet. Um das Website-Skelett zu installieren, müssen Sie den Befehl mit der Option --full . --demo das Demo- Projekt zu installieren, müssen Sie den Befehl mit der Option --demo .


Unter der Haube führt symfony new den Befehl composer create-project des composer create-project , initialisiert dann ein neues Git-Repository und erstellt sofort ein Initial Commit.


Symfonie neu


Lokaler Server


Führen Sie zum Starten des Servers einfach den Befehl im Stammverzeichnis der Anwendung aus


 $ symfony serve 

Symfonie dienen


Es analysiert die verfügbaren SAPIs auf dem verwendeten Computer und wählt die besten aus den vorhandenen aus, wobei die folgenden Prioritäten verwendet werden: Zuerst PHP FPM, dann PHP CGI und am Ende von PHP CLI. Die Liste der verfügbaren SAPIs kann mit dem folgenden Befehl angezeigt werden:


 $ symfony local:php:list 

symfony local: php: list


Danach startet das Team den Server, der unter der Adresse 127.0.0.1 verfügbar ist, und wählt den freien Port ab 8000 .


Standardmäßig startet der Server interaktiv. Wir sehen sofort die Server- und Anwendungsprotokolle, aber unser Terminal ist blockiert. Der Server kann im Daemon-Modus gestartet werden. symfony serve die Option -d wenn Sie den Befehl symfony serve .


Protokolle können durch Ausführen des Befehls angezeigt werden:


 $ symfony server:log 

Sie können den Status des laufenden Servers auch mit dem folgenden Befehl anzeigen:


 $ symfony server:status 

Verwenden Sie den folgenden Befehl, um den laufenden Server zu stoppen:


 $ symfony server:stop 

UPD: Bisher haben wir das Symfony / Web-Server-Bundle- Paket verwendet, um den Server zu starten. Mit dem Aufkommen der Symfony-CLI wird dieses Paket nicht mehr sehr relevant, da es den Server nur mit der PHP-CLI-SAPI starten kann und HTTPS, Domänennamen, PHP-FPM-SAPI und mehr nicht unterstützt.


TLS-Unterstützung


Bei einigen Diensten oder Bibliotheken von Drittanbietern müssen Sie Anforderungen mithilfe des HTTPS-Protokolls senden. Die Symfony-CLI bietet die Möglichkeit, die TLS-Unterstützung sehr einfach zu konfigurieren, indem zusätzliche Komponenten mit dem folgenden Befehl installiert werden:


 $ symfony server:ca:install 

symfony server: ca: install


Dann starten Sie einfach Ihren Browser neu und voila - TLS-Unterstützung ist konfiguriert! Starten Sie den Server mit dem Befehl symfony serve und Sie können mithilfe des HTTPS-Protokolls zur Site symfony serve .


Ich möchte nicht wirklich alle Projekte unter https://127.0.0.1:8000 oder https://localhost:8000 öffnen, aber was ist mit Ihnen? Dies bringt Unannehmlichkeiten mit sich: Wenn mehrere Projekte gleichzeitig ausgeführt werden, müssen Sie sich merken, an welchem ​​Port das Projekt arbeitet. Wenn der Server neu gestartet wird, können sich die Ports usw. ändern.


Symfony CLI löst auch dieses Problem! Es bietet uns einen Proxyserver, mit dem Sie schöne Domainnamen erstellen können. Binden Sie dazu den gewünschten Domainnamen mit dem folgenden Befehl an unser Projekt:


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

Symfony-Proxy: Domäne: Anhängen


demo-project.com die Domäne demo-project.com an das Projektverzeichnis gebunden. Als nächstes müssen wir den Proxyserver mit dem folgenden Befehl starten:


 $ symfony proxy:start 

Symfony-Proxy: Start


Wir haben den Proxyserver im Daemon-Modus gestartet und er ist unter unserer Adresse http://127.0.0.1:7080 verfügbar. Wir können ihn in einem Browser öffnen:


Symfony-Proxyserver


Hier sehen wir eine Liste der Domänen, Pfade zu Projekten im Dateisystem und den Serverstatus für jedes Projekt. In diesem Screenshot sehen Sie, dass sich alle Server im Status "Gestoppt" befinden, Stopped noch nicht ausgeführt werden. Im nächsten Schritt müssen wir diesen Proxyserver in den Betriebssystemeinstellungen hinzufügen


macOS Proxy Config


Damit ist die Einrichtung des Proxyservers abgeschlossen. Anschließend müssen Sie den Server mit dem bereits bekannten Befehl symfony serve . Zusätzlich zur IP-Adresse mit dem Port sehen wir unseren Domainnamen, den wir im Browser verwenden können! Das .wip- Postfix wird allen Domainnamen hinzugefügt.


Symfonie dienen


Das heißt, bei Verwendung des Proxy-Server-Flows ändert sich der Start des Projekts geringfügig:


  1. Wir starten den Proxyserver
     $ symfony proxy:start 
  2. Wir starten den Server für die Anwendung
     $ symfony serve 

Um die Arbeit mit dem Projekt abzuschließen, „spiegeln“ wir die oben beschriebenen Aktionen:


  1. Wir stoppen den Server
     $ symfony server:stop 
  2. Stoppen Sie den Proxyserver
     $ symfony proxy:stop 

Um diese Vorgänge zu vereinfachen, empfehle ich die Verwendung des Dienstprogramms GNU Make.


PHP-Versionswechsel


Wenn Sie in verschiedenen Projekten unterschiedliche Versionen von PHP verwenden, haben Sie wahrscheinlich das Problem, zwischen Versionen zu wechseln. Es wäre großartig, ein automatisches Werkzeug dafür zu haben, oder? Symfony CLI kann dieses Problem lösen! Sie müssen nur die .php-version im Stammverzeichnis des Projekts erstellen und die gewünschte Version als Inhalt angeben.


 $ echo "7.2" > .php-version 

PHP-Version


Wie Sie im obigen Screenshot sehen können, hat die Symfony-CLI die PHP-Versionsdatei gelesen und den Server mit der in dieser Datei angegebenen Version gestartet.


Die Symfony-CLI bietet uns auch einen Wrapper über die PHP-CLI, der auch die in der PHP-Versionsdatei angegebene PHP-Version berücksichtigt. Wenn Sie also Konsolenskripte aufrufen müssen, z. B. bin/console , verwenden Sie diese.


 $ symfony php 

symfony php


Zur Vereinfachung können Sie einen Alias ​​für diesen Befehl erstellen, um Zeit zu sparen und Fehler beim Schreiben des Befehls zu vermeiden. Zum Beispiel habe ich einen Alias sphp für mich erstellt:


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

Symfony CLI bietet einen ähnlichen Wrapper für Composer, sodass Sie auch keine Probleme damit haben. Zur Vereinfachung können Sie einen Alias ​​für diesen Wrapper erstellen. Ich habe diesen Scomposer :


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

Suchen Sie nach anfälligen Paketen


Als Bonus bietet die Symfony-CLI einen Befehl zum Suchen nach anfälligen Composer-Paketen in Ihrem Projekt. Sie müssen die Symfony Security Checker- Abhängigkeit nicht mehr im Projekt installieren. Die offizielle Dokumentation legt außerdem nahe, dass die in die Symfony-CLI integrierte Version besser funktioniert, da keine HTTP-Anforderungen für die offizielle API gestellt werden. Sie können den Test mit dem folgenden Befehl ausführen:


 $ symfony security:check 

Symfony-Sicherheit: überprüfen


Fazit


Symfony CLI ist eine recht praktische Komponente der lokalen Anwendungsinfrastruktur. Er kann einen Webserver mit Unterstützung für das HTTPS-Protokoll ausführen, Domänennamen erstellen, das Umschalten der PHP-Version für jedes Projekt automatisieren und Abhängigkeiten auf Schwachstellen überprüfen.


Die offizielle Dokumentation der Komponente finden Sie unter diesem Link .
Alle Fragen und Probleme können im offiziellen Symfony / Cli-Repository auf GitHub beschrieben werden.


Teilen Sie Ihre Erfahrungen mit diesem Tool in den Kommentaren.


Vielen Dank für Ihre Aufmerksamkeit!

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


All Articles