Despliegue de la web en producción
Introducción
Hemos llegado al final de nuestra exploración de Symfony. Hemos visto muchas cosas y aún queda mucho por descubrir, especialmente los test unitarios, los eventos y los sistemas de caché, entre otros.
Hemos decidido voluntariamente no profundizar más para no sobrecargar este trabajo con elementos técnicos demasiado avanzados que no serán utilizados directamente por la mayoría de los desarrolladores de Symfony (al menos al principio).
Para aquellos que deseen profundizar, pueden consultar la documentación de Symfony, que tiene una altísima calidad y está siempre actualizada.
Sin embargo, con el contenido de este libro, debería poder desarrollar su aplicación Symfony incluso si es principiante en PHP.
Queda un último punto por abordar: el despliegue. Su sitio está listo en su servidor local. ¿Cómo lo implementa en el servidor de producción definitivo? ¿Qué precauciones debe tomar? A continuación, veremos los pasos que hay que seguir para una implementación exitosa.
Gestión del rendimiento
El primer paso esencial es vaciar la caché. Esto evita posibles errores que podrían ocurrir en producción:
php bin/console cache:clear
Incluso aunque no se haya utilizado necesariamente, tome la precaución de vaciar la caché de producción:
php bin/console cache:clear --env=prod
1. La memoria caché HTTP
El mayor desafío que enfrentará en modo Producción es la velocidad de carga de sus páginas (especialmente si tiene muchos usuarios conectados). No pierda de vista que hoy en día un usuario no volverá a su sitio si las páginas tardan más de 3 segundos en cargarse. Una velocidad de carga demasiado lenta reduce su tráfico, pero también afecta a su clasificación en los motores de búsqueda como Google. De hecho, tiene una herramienta para probar el tiempo de carga de sus páginas proporcionada por Google: https://developers.google.com/speed/pagespeed/insights/?
Una de las formas más comunes de aumentar la velocidad de carga de sus páginas es utilizar una caché. La memoria caché más común en el mundo web (aunque hay otras) es la caché HTTP.
El principio de la caché es almacenar un recurso dado (por ejemplo, una página web) para devolverlo cada vez que se solicita sin tener que reconstruirlo a través del script PHP.
Cuando una caché HTTP recibe una solicitud de página en su espacio de almacenamiento, intercepta la solicitud y devuelve su copia en lugar de volver a descargarla desde el servidor original.
Hay varios tipos de caché HTTP: desde cachés a nivel de servidor hasta cachés en proxies y en navegadores...
Sí, sus navegadores utilizan parte de su espacio en disco para almacenar páginas en caché....
El entorno de producción
El entorno de producción es sustancialmente diferente al entorno local. Recuerde hacer una copia de seguridad de su archivo .env como .env.local para poder recuperarlo más adelante. Además, puede desactivar .env.local del control de versiones si está utilizando GIT, por ejemplo.
A continuación, debe crear las variables de entorno en el archivo .env que correspondan a su entorno de producción:
APP_ENV=prod
Desactivar el modo debug con la variable APP_DEBUG:
APP_DEBUG=false
Modificar la URL de acceso a la base de datos de producción. Que no se quede la contraseña por defecto:
DATABASE_URL=mysql://user:psswd@bdd_address/db_name
Y, finalmente, el acceso al servidor de email:
MAILER_URL=smtp://email_server_address
Comprobar la seguridad de las dependencias
Existen multitud de dependencias en un proyecto Symfony. Podrá constatarlo abriendo la carpeta Vendor lo podrá ver. El volumen es gigantesco y resulta imposible conocer de memoria todos las vulnerabilidades.
Para comprobar la seguridad de las dependencias, puede utilizar el comando:
symfony check:security
Si obtiene este mensaje:
No packages have known vulnerabilities.
¡Todo está bien!
Preparar el servidor de producción
Para preparar el servidor de producción y hacer que su aplicación sea visible en Internet, es necesario instalarla en un servidor remoto, conocido como servidor de producción. Este servidor debe ser compatible con la configuración de Symfony.
Si ha optado por un servicio de alojamiento (un sitio que le ofrece alojar su aplicación en uno de sus servidores), es fácil probar el entorno del servidor.
Puede encontrar muchos proveedores de alojamiento en Internet. Es recomendable elegir un proveedor de alojamiento de pago, ya que suele ser más confiable.
Para verificar si su servidor de producción cumple con los requisitos de Symfony, ejecute el siguiente comando en el terminal local:
symfony check:requirements
Si aún no dispone de servidor de producción, puede comprobar la configuración necesaria en la página: https://symfony.com/doc/current/setup.html#technical-requirements
Desplegando la aplicación
Para desplegar la aplicación en el servidor de producción, tiene dos posibilidades.
Puede utilizar un programa como FileZilla (o Cyberduck en Mac) o puede desplegar en la nube (también llamada Cloud o «el servidor de otro»).
1. Desplegando vía FTP
FTP es un protocolo de transferencia. No tiene que preocuparse por ello, es solo un medio de comunicación entre ordenadores (el suya localmente y su servidor de producción a distancia).
VSCode permite desplegar su aplicación gracias al complemento ftp-simple.
Instale el plug-in.
Pulse [F1] y escriba ftp-simple.
Seleccione la opción config ftp-simple.
Establezca los parámetros de configuración de su servidor de producción (suministrado por el proveedor de alojamiento).
Pulse nuevamente la tecla [F1] y escriba ftp-simple.
Seleccione Crear directorio en el servidor FTP. Especifique la dirección del servidor.
Seleccione el directorio raíz de su aplicación y luego pulse [Ctrl][Shift] S.
Si tiene dificultades con VSCode, lo más sencillo es utilizar una herramienta FTP, como FileZilla (o Cyberduck en Mac).
Vaya al sitio https://filezilla-project.org
Descargue FileZilla y ejecútelo.
Aparecerá esta pantalla:
![images/RI22_03.png](https://www.eni-training.com/download/3344c6bd-83e8-47fb-bff9-51328b4bd484/images/RI22_03.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Si introduce en la barra superior el nombre de su servidor (Host), su inicio de sesión para el servidor (Username) y su contraseña (Password), verá en la pantalla de la derecha (Remote Site) las carpetas de su servidor remoto.
Entonces, simplemente arrastre y suelte la carpeta...