39 De Laravel a Producción Configuración .env, Migraciones, Permisos y Caché todo lo que DEBES Saber

Duración: 21 min
Módulo: Despliegue en Producción & Configuración Final Lección 1 de 1

Descripción

🎓 Lección 39: Despliegue de Laravel a Producción (Configuración .env, Migraciones, Permisos y Caché)

Objetivo General: Aprender a desplegar y optimizar una aplicación en Laravel en un servidor de producción real (cPanel/Shared Hosting) garantizando la limpieza de caché, configuración de entornos subdominios y la conexión segura a MySQL.

🚀 Pasos Clave con Timestamps

  • ⏱️ 01:28 Optimización y Limpieza en Local: Ejecución de comandos php artisan optimize:clear, config:clear, route:clear, view:clear y event:clear para eliminar residuos de la caché local previo al despliegue.
  • ⏱️ 02:57 Ajuste del Entorno (.env): Modificación del archivo de configuración para definir variables de entorno en producción como el nombre oficial de la aplicación y el idioma.
  • ⏱️ 04:48 Exploración del Servidor e Interfaces (cPanel): Acceso al cPanel del hosting (BanaHosting) para gestionar el File Manager, MySQL Databases, phpMyAdmin y la versión PHP.
  • ⏱️ 05:48 Creación y Configuración del Subdominio: Apertura de un subdominio en la sección Domains apuntando el Document Root a la carpeta public del proyecto en Laravel (subdominios/odontologia/public).
  • ⏱️ 08:28 Empaquetado del Código Fuente: Compresión del proyecto local exclusivamente en formato .zip (evitando .rar debido a compatibilidad de extracción en servidores Linux/cPanel).
  • ⏱️ 09:18 Subida y Descompresión via File Manager: Carga del archivo .zip al directorio raíz del subdominio en el File Manager y extracción directa en el servidor.
  • ⏱️ 10:34 Aprovisionamiento de Base de Datos MySQL: Creación de la base de datos, generación de un usuario con contraseña segura y asignación de todos los privilegios sobre la base de datos.
  • ⏱️ 13:40 Migración e Importación vía phpMyAdmin: Exportación de la estructura relacional local e importación completa del script SQL en phpMyAdmin del servidor.
  • ⏱️ 16:56 Enlace de Credenciales en .env: Edición del archivo .env en el servidor con los datos reales (DB_DATABASE, DB_USERNAME, DB_PASSWORD).
  • ⏱️ 17:48 Selección de la Versión PHP Adecuada: Configuración de la versión de PHP en el cPanel (PHP 8.3) para evitar errores de incompatibilidad con dependencias de Laravel.
  • ⏱️ 18:32 Purga Manual de Caché en Bootstrap: Limpieza de los archivos .php dentro del directorio bootstrap/cache/ para forzar a la aplicación a regenerar la configuración del servidor.
  • ⏱️ 19:05 Verificación del Despliegue: Prueba exitosa de inicio de sesión y uso general de la plataforma en el dominio de producción.

🛠️ Comandos y Rutas Principales

Tipo / ContextoComando / Ruta / RecursoAcción / Propósito
💻 Artisan CLIphp artisan optimize:clearLimpia todos los archivos de caché acumulados en la aplicación
💻 Artisan CLIphp artisan config:clearElimina la caché del archivo de configuración .env
💻 Artisan CLIphp artisan route:clearElimina las rutas almacenadas en caché
💻 Artisan CLIphp artisan view:clearElimina la caché de las plantillas de Blade renderizadas
📁 Directorio del Servidor/subdominios/odontologia/publicDocument Root asignado al subdominio en cPanel
📂 Carpeta de Cachébootstrap/cache/*.phpArchivos compilados a eliminar si ocurre un error de acceso denegado o caché en producción
🌐 Acceso Público[https://odontologia.hilariweb.com](https://odontologia.hilariweb.com)Dominio en producción configurado en el cPanel

🔒 Buenas Prácticas y Seguridad

  1. 🛡️ Protección del Document Root: Configura siempre el servidor de manera que el subdominio apunte directamente a la carpeta /public. Nunca expongas la carpeta raíz del proyecto, de lo contrario, el archivo .env y el código fuente quedarían accesibles al público.
  2. 🔐 Cambio de Variables de Entorno Clave: En producción, cambia APP_ENV=production y APP_DEBUG=false dentro del archivo .env. Mantener APP_DEBUG=true expondría datos sensibles e información interna del servidor cuando ocurra un error.
  3. 🗄️ Generación y Asignación Segura de MySQL: Crea usuarios dedicados por cada base de datos con contraseñas aleatorias complejas. Evita reutilizar usuarios root o administradores globales del servidor para la aplicación.
  4. 🧹 Reinicio de Archivos de Configuración: Si el sistema presenta errores de conexión o permisos tras subirlo, elimina los archivos cacheados dentro de bootstrap/cache/ (config.php, routes-v7.php, etc.) para asegurar que Laravel vuelva a leer el .env del servidor real.