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.| Extensión | Descripción |
|---|---|
| Ctype | Comprobación de tipos de caracteres |
| cURL | Comunicación HTTP |
| DOM | Manipulación del DOM de XML/HTML |
| Fileinfo | Detección de tipo MIME |
| Filter | Filtrado de datos |
| Hash | Funciones hash |
| Mbstring | Procesamiento de cadenas multibyte |
| OpenSSL | Cifrado |
| PCRE | Expresiones regulares |
| PDO | Conexión a base de datos |
| Session | Gestión de sesiones |
| Tokenizer | Análisis de tokens de PHP |
| XML | Procesamiento XML |
Configuración del servidor
Nginx
Si usas Nginx, parte del siguiente archivo de configuración. Es esencial reenviar todas las solicitudes apublic/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:Permisos de directorios
Laravel necesita escritura en los directoriosbootstrap/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 conoptimize.
optimize:clear.
Comandos de optimización individuales
optimize ejecuta los siguientes comandos en bloque. También puedes ejecutarlos por separado si es necesario.
| Comando | Descripción |
|---|---|
php artisan config:cache | Combina los archivos de configuración en uno y los cachea |
php artisan event:cache | Cachea el mapeo eventos → listeners |
php artisan route:cache | Cachea la definición de rutas y acelera su registro |
php artisan view:cache | Precompila las vistas Blade y acelera las solicitudes |
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.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óndebug 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.
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.
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.