1. Primeros pasos
  2. Implementación

Introducción

Cuando estés listo para implementar tu aplicación Laravel en producción, hay algunas cosas importantes que puedes hacer para asegurarte de que tu aplicación se esté ejecutando de manera eficiente. En este documento, cubriremos algunos puntos de partida excelentes para asegurarte de que tu aplicación Laravel se implemente correctamente.

Requisitos del servidor

El framework Laravel tiene algunos requisitos del sistema. Debes asegurarte de que tu servidor web tenga la siguiente versión mínima de PHP y extensiones:

  • PHP >= 8.1
  • Extensión Ctype de PHP
  • Extensión cURL de PHP
  • Extensión DOM de PHP
  • Extensión Fileinfo de PHP
  • Extensión Filter de PHP
  • Extensión Hash de PHP
  • Extensión Mbstring de PHP
  • Extensión OpenSSL de PHP
  • Extensión PCRE de PHP
  • Extensión PDO de PHP
  • Extensión Session de PHP
  • Extensión Tokenizer de PHP
  • Extensión XML de PHP

Configuración del servidor

Nginx

Si estás implementando tu aplicación en un servidor que utiliza Nginx, puedes utilizar el siguiente archivo de configuración como punto de partida para configurar tu servidor web. Es probable que necesites personalizar este archivo según la configuración de tu servidor. Si deseas ayuda para administrar tu servidor, considera utilizar un servicio de gestión e implementación de servidores Laravel de primera parte, como Laravel Forge.

Asegúrate, como se indica en la configuración a continuación, de que tu servidor web dirija todas las solicitudes al archivo public/index.php de tu aplicación. Nunca intentes mover el archivo index.php a la raíz de tu proyecto, ya que servir la aplicación desde la raíz del proyecto expondrá muchos archivos de configuración sensibles a Internet público:

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.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
 
location ~ /\.(?!well-known).* {
deny all;
}
}

Optimización

Optimización del cargador automático

Al implementar en producción, asegúrate de que estás optimizando el mapa del cargador automático 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

Nota Además de optimizar el cargador automático, asegúrate siempre de incluir un archivo composer.lock en el repositorio de control de origen de tu proyecto. Las dependencias de tu proyecto se pueden instalar mucho más rápido cuando hay un archivo composer.lock presente.

Configuración de la caché

Al implementar tu aplicación en producción, asegúrate de ejecutar el comando Artisan config:cache durante tu proceso de implementación:

php artisan config:cache

Este comando combinará todos los archivos de configuración de Laravel en un solo archivo caché, lo que reduce significativamente la cantidad de accesos que el framework debe realizar al sistema de archivos al cargar los valores de configuración.

Advertencia Si ejecutas el comando config:cache durante tu proceso de implementación, asegúrate de que solo estás llamando a la función env desde tus archivos de configuración. Una vez que la configuración se haya almacenado en caché, el archivo .env no se cargará y todas las llamadas a la función env para las variables de .env devolverán null.

Caché de eventos

Si tu aplicación está utilizando descubrimiento de eventos, debes cachear el mapeo de eventos a listeners de tu aplicación durante el proceso de implementación. Esto se puede lograr invocando el comando Artisan event:cache durante la implementación:

php artisan event:cache

Caché de rutas

Si estás construyendo una aplicación grande con muchas rutas, asegúrate de ejecutar el comando Artisan route:cache durante tu proceso de implementación:

php artisan route:cache

Este comando reduce todos los registros de rutas en una llamada de método única dentro de un archivo caché, mejorando el rendimiento del registro de rutas al registrar cientos de rutas.

Caché de vistas

Al implementar tu aplicación en producción, asegúrate de ejecutar el comando Artisan view:cache durante tu proceso de implementación:

php artisan view:cache

Este comando precompila todas tus vistas Blade para que no se compilen bajo demanda, mejorando el rendimiento de cada solicitud que devuelve una vista.

Modo de depuración

La opción debug en el 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 tu aplicación.

Advertencia En tu entorno de producción, este valor siempre debería ser false. Si la variable APP_DEBUG está configurada como true en producción, corres el riesgo de exponer valores de configuración sensibles a los usuarios finales de tu aplicación.

Implementación fácil con Forge / Vapor

Laravel Forge

Si aún no estás listo para administrar la configuración de tu propio servidor o no te sientes cómodo configurando todos los diversos servicios necesarios para ejecutar una aplicación Laravel robusta, Laravel Forge es una maravillosa alternativa.

Laravel Forge puede crear servidores en varios proveedores de infraestructura como DigitalOcean, Linode, AWS y más. Además, Forge instala y gestiona todas las herramientas necesarias para construir aplicaciones Laravel robustas, como Nginx, MySQL, Redis, Memcached, Beanstalk y más.

Nota ¿Quieres una guía completa para implementar con Laravel Forge? Consulta el Laravel Bootcamp y la serie de videos de Forge disponible en Laracasts.

Laravel Vapor

Si deseas una plataforma de implementación totalmente sin servidor y autoescalable ajustada para Laravel, echa un vistazo a Laravel Vapor. Laravel Vapor es una plataforma de implementación sin servidor para Laravel, alimentada por AWS. Inicia tu infraestructura Laravel en Vapor y enamórate de la simplicidad escalable de sin servidor. Laravel Vapor está afinado por los creadores de Laravel para funcionar perfectamente con el framework para que puedas seguir escribiendo tus aplicaciones Laravel exactamente como estás acostumbrado.