# Introducción

Cuando esté listo para desplegar su aplicación Laravel a la producción, hay algunas cosas importantes que puede hacer para asegurarse de que su aplicación se está ejecutando de la manera más eficiente posible. En este documento, cubriremos algunos puntos de partida para asegurarnos de que su aplicación Laravel se despliega correctamente.

# Configuración del servidor

Nginx

Si usted está desplegando su aplicación en un servidor que está corriendo Nginx, puede usar el siguiente archivo de configuración como punto de partida para configurar su servidor web. Lo más probable es que este archivo tenga que ser personalizado dependiendo de la configuración de su servidor. Si desea ayuda para administrar su servidor, considere usar un servicio como Laravel Forge:

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

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    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/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

# Optimización

Optimización del autocargador

Cuando se despliega a la producción, asegúrese de que está optimizando el mapa de autocargadores de la clase de Composer para que Composer pueda encontrar rápidamente el archivo adecuado a cargar para una clase determinada:

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

Además de optimizar el autocargador, siempre debe asegurarse de incluir un archivo composer.lock en el repositorio de control de fuentes de su proyecto. Las dependencias de su proyecto pueden ser instaladas mucho más rápido cuando un archivo composer.lock está presente.

Optimizando la carga de configuración

Al desplegar su aplicación en producción, debe asegurarse de ejecutar el comando Artisan config:cache durante el 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 enormemente el número de viajes que el framework debe hacer al sistema de archivos al cargar sus valores de configuración.

Si ejecuta el comando config:cache durante el proceso de despliegue, debe asegurarse de que sólo llama a la función env desde sus archivos de configuración. Una vez que la configuración ha sido almacenada en la caché, el archivo .env no se cargará y todas las llamadas a la función env volverán null.

Optimización de la carga de la ruta

Si está construyendo una aplicación grande con muchas rutas, debe asegurarse de que está ejecutando el comando Artisan route:cache durante su proceso de despliegue::

php artisan route:cache

Este comando reduce todos sus registros de ruta a una sola llamada de método dentro de un archivo en caché, mejorando el rendimiento del registro de ruta cuando se registran cientos de rutas.

Optimización de la carga de la vista

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

php artisan view:cache

Este comando precompila todas las vistas de su Blade para que no se compilen a petición, mejorando el rendimiento de cada petición que devuelve una vista.

# Despliegue con Forge / Vapor

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

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 robustas de Laravel, como Nginx, MySQL, Redis, Memcached, Beanstalk, y más.

Laravel Vapor

Si quieres una plataforma de despliegue sin servidores y de auto-escalado ajustada para Laravel, mira el Laravel Vapor. Laravel Vapor es una plataforma de despliegue sin servidores para Laravel, impulsada por AWS. Lance su infraestructura Laravel en Vapor y enamórese de la simplicidad escalable de la plataforma sin servidores. Laravel Vapor ha sido afinado por los creadores de Laravel para que funcione sin problemas con el framework, de modo que puedas seguir escribiendo tus aplicaciones Laravel exactamente como estás acostumbrado.