Saltar a contenido

Nuestro proyecto a producción

Cuando estés listo para desplegar tu aplicación Laravel en producción, hay algunas cosas importantes que puedes hacer para asegurarte de que tu aplicación se ejecuta de la manera más eficiente posible. Ten en mente que no es un simple "copiar y pegar ficheros", si no que tienes que tener en cuenta una serie de configuraciones para su funcionamiento.

Requisitos del server

El framework Laravel tiene algunos requisitos de sistema. Debes asegurarte tiene un entorno idéntico al tuyo de desarrollo:

  • PHP >= 8.3
  • Ctype PHP Extension
  • cURL PHP Extension
  • DOM PHP Extension
  • Fileinfo PHP Extension
  • Filter PHP Extension
  • Hash PHP Extension
  • Mbstring PHP Extension
  • OpenSSL PHP Extension
  • PCRE PHP Extension
  • PDO PHP Extension
  • Session PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension

Aunque parezcan muchas, todos son comunes en la mayoría de los proveedores de hosting.

Configuración del servidor: Nginx

Si estás desplegando su aplicación en un servidor que ejecuta Nginx, puedes utilizar el siguiente archivo de configuración como punto de partida para configurar tu servidor web. Lo más probable es que este archivo tenga que ser personalizado dependiendo de la configuración de tu servidor.

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    root /srv/example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Optimización

Optimización del autoloader

Al desplegar en producción, asegúrate de que está optimizando el mapa de autocarga de clases de Composer para que Composer pueda encontrar rápidamente el archivo adecuado para cargar una clase determinada:

composer install --optimize-autoloader --no-dev

Info

Además de optimizar el autoloader, siempre debes asegurarte de incluir un archivo composer.lock en el repositorio de control de código fuente de tu proyecto. Las dependencias de su proyecto se pueden instalar mucho más rápido cuando un archivo composer.lock está presente.

Optimización de la carga de configuraciones

Cuando despliegues tu aplicación a producción, debes asegurarte de ejecutar el comando Artisan config:cache durante tu proceso de despliegue:

php artisan config:cache
Este comando combinará todos los archivos de configuración de Laravel en un único archivo en caché, lo que reduce en gran medida el número de viajes que el framework debe hacer al sistema de archivos al cargar los valores de configuración.

Info

Si ejecutas el comando config:cache durante tu proceso de despliegue, debes asegurarte de que sólo estás llamando a la función env desde dentro de tus ficheros de configuración. Una vez que la configuración se ha almacenado en caché, el archivo .env no se cargará y todas las llamadas a la función env para variables .env devolverán null.

Optimización de la carga de rutas

Si estás construyendo una aplicación grande con muchas rutas, debes asegurarte de que estás ejecutando el comando Artisan route:cache durante tu proceso de despliegue:

php artisan route:cache
Este comando reduce todos los registros de rutas en una única llamada a un método dentro de un archivo en caché, lo que mejora el rendimiento del registro de rutas cuando se registran cientos de rutas.

Optimización de la carga de vistas

Cuando despliegues tu aplicación a producción, debes asegurarte de ejecutar el comando Artisan view:cache durante tu proceso de despliegue:

php artisan view:cache
Este comando precompila todas tus vistas Blade para que no se compilen bajo demanda, mejorando el rendimiento de cada petición que devuelve una vista.

Modo debug

La opción de depuración en su archivo de configuración config/app.php determina cuánta información sobre un error se muestra realmente al usuario. Por defecto, esta opción está configurada para respetar el valor de la variable de entorno APP_DEBUG, que se almacena en el archivo .env de su aplicación.

En su entorno de producción, este valor debe ser siempre false . Si la variable APP_DEBUG se establece en true en producción, corres el riesgo de exponer valores de configuración sensibles a los usuarios finales de tu aplicación.

Actividad

  • 🏹 RE 912. (RA9 / CE9a CE9b CE9c CE9d CE9e CE9f CE9h / IC2 / 10p) Esta fase corresponde al bloque central del Reto 05, en la que se completa el desarrollo funcional de la aplicación web reactiva.

    Durante esta fase deben tenerse en cuenta los siguientes aspectos:

    • Desarrollar las vistas principales de la aplicación:
    • Listado de publicaciones.
    • Formulario de creación y edición.
    • Implementar la autenticación de usuarios mediante Laravel Breeze, con protección de rutas.
    • Configurar correctamente el uso de tokens de autenticación en las peticiones.
    • Añadir manejo de errores: mostrar mensajes claros y coherentes para el usuario.
    • Simular el despliegue del proyecto (como mínimo con servidor local documentado).

    Esta fase representa el desarrollo completo de la lógica del cliente, así como la consolidación del flujo de trabajo con servicios REST, y debe culminar con una versión funcional y presentable del proyecto.