En diciembre de 2018, en la conferencia SymfonyCon de Lisboa, Fabien Potansier, el creador del marco Symfony, introdujo un cierto symfony.phar, una herramienta para crear r谩pidamente aplicaciones Symfony basadas en las plantillas oficiales del proyecto: esqueleto , esqueleto de sitio web o demostraci贸n . Tambi茅n le permite ejecutar un servidor web local para el desarrollo.
Luego, la herramienta se reescribi贸 en el idioma Golang, lo que permiti贸 implementar muchas caracter铆sticas adicionales, como la compatibilidad con el protocolo https para el servidor web local, la estrecha integraci贸n con SymfonyCloud y mucho m谩s. Le invito, querido lector, a familiarizarse con esta herramienta con m谩s detalle, ya que funciona no solo en el contexto del marco de Symfony.
En este art铆culo, veremos la herramienta en el contexto del desarrollo local y no afectar谩 la integraci贸n con SymfonyCloud.
Creaci贸n de proyectos
Para crear un nuevo proyecto de Symfony basado en una de las plantillas oficiales, debe ejecutar el comando:
$ symfony new [--full | --demo] <path-to-project>
Por defecto, se utiliza la plantilla m铆nima de esqueleto . Para instalar el esqueleto del sitio web, debe ejecutar el comando con la opci贸n --full
. En consecuencia, para instalar el proyecto de demostraci贸n , debe ejecutar el comando con la opci贸n --demo
.
Bajo el cap贸, symfony new
ejecuta el comando de composer create-project
del composer create-project
, luego inicializa un nuevo repositorio de Git e inmediatamente crea una confirmaci贸n inicial.

Servidor local
Para iniciar el servidor, simplemente ejecute el comando en la ra铆z de la aplicaci贸n
$ symfony serve

analizar谩 los SAPI disponibles en la m谩quina utilizada y elegir谩 el mejor de los existentes, utilizando las siguientes prioridades: primero PHP FPM, luego PHP CGI y al final de PHP CLI. La lista de SAPI disponibles se puede ver con el comando:
$ symfony local:php:list

Despu茅s de eso, el equipo iniciar谩 el servidor, que estar谩 disponible en la direcci贸n 127.0.0.1
y seleccionar谩 el puerto libre a partir de 8000
.
Por defecto, el servidor se inicia de forma interactiva. Inmediatamente vemos los registros del servidor y la aplicaci贸n, pero nuestro terminal est谩 bloqueado. El servidor se puede iniciar en modo demonio. Para hacer esto, agregue la opci贸n -d
cuando ejecute el comando symfony serve
.
Los registros se pueden ver ejecutando el comando:
$ symfony server:log
Tambi茅n puede ver el estado del servidor en ejecuci贸n con el comando:
$ symfony server:status
para detener el servidor en ejecuci贸n, use el comando:
$ symfony server:stop
UPD: Anteriormente, utilizamos el paquete symfony / web-server-bundle para iniciar el servidor. Con la llegada de la CLI de Symfony, este paquete no es muy relevante, ya que solo puede iniciar el servidor usando PHP CLI SAPI y no es compatible con HTTPS, nombres de dominio, PHP FPM SAPI y m谩s.
Soporte TLS
Algunos servicios o bibliotecas de terceros requieren que env铆e solicitudes utilizando el protocolo HTTPS. La CLI de Symfony ofrece la capacidad de configurar f谩cilmente el soporte TLS mediante la instalaci贸n de componentes adicionales mediante el siguiente comando:
$ symfony server:ca:install

a continuaci贸n, simplemente reinicie su navegador y listo. 隆El soporte TLS est谩 configurado! Inicie el servidor con el comando symfony serve
y puede ir al sitio utilizando el protocolo HTTPS.
Realmente no me gusta abrir todos los proyectos en https://127.0.0.1:8000
o https://localhost:8000
, pero 驴y t煤? Esto trae sus inconvenientes: si se ejecutan varios proyectos al mismo tiempo, debe recordar en qu茅 puerto funciona el proyecto; cuando el servidor se reinicia, los puertos pueden cambiar, etc.
Symfony CLI tambi茅n resuelve este problema. Nos proporciona un servidor proxy con el que puede crear hermosos nombres de dominio. Para hacer esto, vincule el nombre de dominio deseado a nuestro proyecto usando el comando:
$ symfony proxy:domain:attach <domain-name>

por lo tanto, el dominio demo-project.com
vinculado al directorio del proyecto. A continuaci贸n, debemos iniciar el servidor proxy con el comando:
$ symfony proxy:start

Lanzamos el servidor proxy en modo demonio y est谩 disponible en nuestra direcci贸n http://127.0.0.1:7080
, podemos abrirlo en un navegador:

donde veremos una lista de dominios, rutas a proyectos en el sistema de archivos y el estado del servidor para cada proyecto. En esta captura de pantalla, puede ver que todos los servidores est谩n en estado Stopped
, es decir, a煤n no se est谩n ejecutando. El siguiente paso que necesitamos para agregar este servidor proxy en la configuraci贸n del sistema operativo

Esto completa la configuraci贸n del servidor proxy, luego debe iniciar el servidor con el comando symfony serve
ya conocido. Adem谩s de la direcci贸n IP con el puerto, veremos nuestro nombre de dominio, que podemos usar en el navegador. El postfix .wip se agrega a todos los nombres de dominio.

Es decir, en el caso de utilizar el flujo del servidor proxy, el inicio del proyecto cambia ligeramente:
- Iniciamos el servidor proxy
$ symfony proxy:start
- Iniciamos el servidor para la aplicaci贸n.
$ symfony serve
Para completar el trabajo con el proyecto, "reflejamos" las acciones descritas anteriormente:
- Paramos el servidor
$ symfony server:stop
- Detener el servidor proxy
$ symfony proxy:stop
Para simplificar estas operaciones, recomiendo usar la utilidad GNU Make.
Cambio de versi贸n de PHP
Si usa diferentes versiones de PHP en diferentes proyectos, probablemente haya enfrentado el problema de cambiar entre versiones. Ser铆a genial tener alg煤n tipo de herramienta autom谩tica para esto, 驴verdad? 隆La CLI de Symfony puede resolver este problema! Solo necesita crear el archivo .php-version
en la ra铆z del proyecto y especificar la versi贸n deseada como contenido.
$ echo "7.2" > .php-version

Como puede ver en la captura de pantalla anterior, la CLI de Symfony ley贸 el archivo de versi贸n .php e inici贸 el servidor utilizando la versi贸n especificada en este archivo.
Adem谩s, la CLI de Symfony nos proporciona un contenedor sobre la CLI de PHP, que tambi茅n tiene en cuenta la versi贸n de PHP especificada en el archivo de versi贸n .php. Es decir, si necesita llamar a scripts de consola, por ejemplo bin/console
, 煤selo.
$ symfony php

Para mayor comodidad, puede crear un alias para este comando para ahorrar tiempo y evitar errores al escribir el comando. Por ejemplo, cre茅 un alias sphp para m铆:
$ echo "alias sphp='symfony php'" >> ~/.bash_profile && source ~/.bash_profile
Symfony CLI proporciona un contenedor similar para Composer, por lo que tampoco tendr谩 ning煤n problema. Para mayor comodidad, puede crear un alias para este contenedor. Tengo este scomposer :
$ echo "alias scomposer='symfony composer'" >> ~/.bash_profile && source ~/.bash_profile
Verificar paquetes vulnerables
Como beneficio adicional, la CLI de Symfony proporciona un comando para buscar paquetes de compositores vulnerables en su proyecto. Ya no tiene que instalar la dependencia de Symfony Security Checker en el proyecto. Adem谩s, la documentaci贸n oficial sugiere que la versi贸n integrada en la CLI de Symfony funciona mejor debido al hecho de que no realiza solicitudes HTTP para la API oficial. Puede ejecutar la prueba con el comando:
$ symfony security:check

Conclusi贸n
Symfony CLI es un componente bastante conveniente de la infraestructura de aplicaci贸n local. Tiene la capacidad de ejecutar un servidor web con soporte para el protocolo HTTPS, crear nombres de dominio, automatizar el cambio de la versi贸n de PHP para cada proyecto y verificar las vulnerabilidades en las dependencias.
La documentaci贸n oficial del componente se puede encontrar en este enlace .
Cualquier pregunta y problema se puede describir en el repositorio oficial de Symfony / Cli en GitHub.
Comparta su experiencia con esta herramienta en los comentarios.
Gracias por su atencion!