39 De Laravel a Producción Configuración .env, Migraciones, Permisos y Caché todo lo que DEBES Saber
Duración: 21 minDescripció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 / Contexto | Comando / Ruta / Recurso | Acción / Propósito |
|---|---|---|
| 💻 Artisan CLI | php artisan optimize:clear | Limpia todos los archivos de caché acumulados en la aplicación |
| 💻 Artisan CLI | php artisan config:clear | Elimina la caché del archivo de configuración .env |
| 💻 Artisan CLI | php artisan route:clear | Elimina las rutas almacenadas en caché |
| 💻 Artisan CLI | php artisan view:clear | Elimina la caché de las plantillas de Blade renderizadas |
| 📁 Directorio del Servidor | /subdominios/odontologia/public | Document Root asignado al subdominio en cPanel |
| 📂 Carpeta de Caché | bootstrap/cache/*.php | Archivos 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
- 🛡️ 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.
- 🔐 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.
- 🗄️ 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.
- 🧹 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.