Skip to main content

Introducción

Al desplegar una aplicación Laravel en producción, es necesario prepararla para que funcione con la mayor eficiencia posible. Esta guía explica los aspectos clave para realizar despliegues de producción de forma fiable.

Flujo de despliegue

Requisitos del servidor

El framework Laravel tiene los siguientes requisitos del sistema. Necesitas PHP 8.3 o superior y las siguientes extensiones de PHP.

Configuración del servidor

Nginx

Si usas Nginx, parte del siguiente archivo de configuración. Es esencial reenviar todas las solicitudes a public/index.php. No muevas index.php a la raíz del proyecto: expondrías archivos de configuración sensibles.

FrankenPHP

FrankenPHP es un servidor de aplicaciones PHP moderno escrito en Go. Puedes iniciar una aplicación Laravel solo con este comando:
Para funcionalidades avanzadas como HTTP/3, compresión moderna, integración con Laravel Octane o binarios autónomos, consulta la documentación de Laravel en FrankenPHP.

Permisos de directorios

Laravel necesita escritura en los directorios bootstrap/cache y storage. Configura los permisos para que el propietario del proceso del servidor web pueda escribir en ellos.

Optimización

Al desplegar en producción, mejora el rendimiento cacheando configuración, eventos, rutas y vistas. Puedes cachearlo todo de golpe con optimize.
Para limpiar la caché usa optimize:clear.

Comandos de optimización individuales

optimize ejecuta los siguientes comandos en bloque. También puedes ejecutarlos por separado si es necesario.
Después de ejecutar config:cache, llama a env() únicamente dentro de los archivos de configuración. Una vez cacheado, el archivo .env deja de leerse, y si llamas a env() fuera de los archivos de configuración devolverá null.

Recarga de servicios

Tras desplegar una nueva versión, los servicios de larga duración como workers de cola, Laravel Reverb o Laravel Octane necesitan reiniciarse para usar el nuevo código.
Este comando finaliza los servicios recargables. Asegúrate de tener un monitor de procesos (como Supervisor) que los reinicie automáticamente.
Si utilizas Laravel Cloud, la recarga elegante de todos los servicios se gestiona automáticamente, por lo que no necesitas el comando reload.

Modo debug

La opción debug de config/app.php controla cuánta información de error se muestra al usuario. Por defecto usa el valor de la variable de entorno APP_DEBUG del archivo .env.
En producción, APP_DEBUG debe ser siempre false. Si APP_DEBUG=true en producción, hay riesgo de exponer valores sensibles como credenciales de base de datos o claves privadas al usuario final.

Ruta de health check

Laravel incluye una ruta de health check para monitorizar el estado de la aplicación. Se integra con monitores de uptime, balanceadores de carga y sistemas de orquestación como Kubernetes. Por defecto se expone el endpoint /up, que devuelve 200 si la aplicación arrancó correctamente o 500 si ocurrió una excepción durante el arranque. Puedes personalizar el URI en bootstrap/app.php.
Cuando se accede a esta ruta se emite el evento Illuminate\Foundation\Events\DiagnosingHealth, por lo que puedes implementar comprobaciones adicionales (base de datos, caché, etc.) en un listener.

Despliegue con Laravel Cloud o Forge

Laravel Cloud

Si buscas una plataforma de despliegue totalmente gestionada con autoescalado, Laravel Cloud es la opción recomendada. Es una PaaS optimizada para Laravel que ofrece compute, base de datos, caché y almacenamiento de objetos gestionados. Está afinada directamente por el equipo de desarrollo de Laravel y se integra con el framework de forma transparente.

Laravel Forge

Si prefieres gestionar tus propios servidores pero sin dedicar tiempo a instalar servicios como Nginx o MySQL, Laravel Forge es de gran ayuda. Crea servidores en los principales proveedores cloud (DigitalOcean, Linode, AWS, etc.) e instala y gestiona automáticamente herramientas como Nginx, MySQL, Redis, Memcached, Beanstalk y más.

Próximos pasos

Despliegue — Documentación oficial

Consulta la documentación oficial para conocer los últimos detalles de configuración de despliegue.
Última modificación el 13 de julio de 2026