# Despliegue en cPanel — subdominio (SIN modificar el proyecto)

El proyecto se sube TAL CUAL. No se toca ni una linea de codigo.
Lo unico que se configura es el Document Root del subdominio.

## Estructura final en el servidor

    /home/USUARIO/capacitaciones/     <- el proyecto COMPLETO, tal cual
        |-- app/  bootstrap/  config/  database/
        |-- resources/  routes/  storage/  vendor/
        |-- public/          <-- AQUI apunta el Document Root
        |-- artisan  composer.json  .env

Document Root del subdominio  =  /home/USUARIO/capacitaciones/public

Esa carpeta "public" es lo unico que el navegador puede ver.
El .env, vendor/ y app/ quedan por encima del Document Root,
o sea inalcanzables desde internet. Eso es lo que hace segura
esta opcion, y por eso no hay que mover ni renombrar nada.

## Pasos

1. PHP 8.2 o 8.3 en cPanel > "Select PHP Version".
   Activa: mbstring, openssl, pdo_mysql, tokenizer, xml, ctype, json,
   bcmath, fileinfo, curl, zip, gd
   (zip y gd son obligatorios para maatwebsite/excel)

2. Comprime el proyecto local en un .zip INCLUYENDO vendor/.
   Excluye: node_modules/, storage/framework/views/*, .env, tests/
   Sube el zip por File Manager y descomprimelo alli
   (mucho mas rapido y confiable que subir por FTP archivo por archivo).

3. cPanel > Domains (o Subdominios) > el subdominio > Document Root.
   Ponlo en:  /home/USUARIO/capacitaciones/public
   Guarda. Este es el paso que reemplaza a "php artisan serve".

4. cPanel > MySQL Databases: crea la BD y el usuario, dale ALL PRIVILEGES.
   Anota los nombres reales (cPanel les pone prefijo: usuario_capacitaciones).

5. Exporta tu BD local desde phpMyAdmin (estructura + datos) e importala
   en el phpMyAdmin de cPanel.

6. Crea /home/USUARIO/capacitaciones/.env con el contenido de
   env.production (de esta carpeta), reemplazando el dominio y los
   datos de la BD. El archivo debe llamarse exactamente ".env"

7. Permisos 755 en storage/ y bootstrap/cache/ (recursivo).
   Si sale "stream or file could not be opened", sube a 775.

## Comprobaciones si algo falla

- Error 500 en blanco -> revisa storage/logs/laravel.log
- "No application encryption key" -> falta APP_KEY en el .env
- Se ve el listado de carpetas (app, config, vendor...) -> el Document
  Root quedo en la carpeta del proyecto y no en .../public
- Home OK pero las demas rutas dan 404 -> no se subio public/.htaccess
  (es archivo oculto: activa "Show Hidden Files" en File Manager)
- Se ve el codigo PHP como texto -> version de PHP mal seleccionada
- "could not find driver" -> falta activar pdo_mysql

## Notas

- NO se usa "php artisan serve" en produccion. Apache ya sirve la app 24/7.
- NO necesitas "npm run build": las vistas usan Tailwind por CDN.
- NO necesitas cron ni worker de colas: el proyecto no tiene jobs
  ni tareas programadas.
- NO se modifica index.php: eso solo hace falta cuando no se puede
  cambiar el Document Root. No es tu caso.
