# Despliegue Laravel en cPanel (V2Networks)

## 1) Crear el subdominio de API

1. En cPanel crea el subdominio: `asamblea-api.codevperu.com`.
2. Document Root recomendado:
   - `/home/<usuario_cpanel>/api-asamblea/public`
3. En **MultiPHP Manager** usa PHP `8.2` o superior.
4. Activa extensiones PHP necesarias: `bcmath`, `ctype`, `curl`, `fileinfo`, `json`, `mbstring`, `openssl`, `pdo_mysql`, `tokenizer`, `xml`, `zip`.

## 2) Subir el codigo

1. Sube el proyecto a `/home/<usuario_cpanel>/api-asamblea`.
2. No subas `node_modules`.
3. Si no subes `vendor`, instala dependencias con Composer en servidor.

## 3) Instalar dependencias backend

```bash
cd ~/api-asamblea
composer install --no-dev --optimize-autoloader
```

## 4) Configurar `.env` de produccion

1. Duplica `.env.example` como `.env`.
2. Usa valores de produccion:

```env
APP_ENV=production
APP_DEBUG=false
APP_URL=https://asamblea-api.codevperu.com
FRONTEND_URL=https://asamblea.codevperu.com

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=<tu_db>
DB_USERNAME=<tu_usuario_db>
DB_PASSWORD=<tu_password_db>

SESSION_DRIVER=file
CACHE_STORE=file
QUEUE_CONNECTION=sync

SANCTUM_STATEFUL_DOMAINS=asamblea.codevperu.com,asamblea-api.codevperu.com
CORS_ALLOWED_ORIGINS=https://asamblea.codevperu.com
CORS_SUPPORTS_CREDENTIALS=false
```

3. Si `APP_KEY` esta vacio:

```bash
php artisan key:generate
```

## 5) Configurar base de datos

1. En cPanel crea base de datos MySQL y usuario.
2. Asigna todos los permisos del usuario a la base creada.
3. Si arrancas desde cero:

```bash
php artisan migrate --force
```

4. Si tienes un respaldo SQL previo, importalo con phpMyAdmin (en ese caso no migres encima sin revisar).

## 6) Permisos, storage y caches

```bash
cd ~/api-asamblea
php artisan storage:link
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

Si el hosting lo requiere, asegura permisos de escritura en `storage/` y `bootstrap/cache/`.

## 7) Verificacion rapida

1. Prueba salud API: `GET https://asamblea-api.codevperu.com/api/health`
2. Prueba login desde tu frontend: `https://asamblea.codevperu.com`
3. Revisa que no existan errores en `storage/logs/laravel.log`.

## 8) Si cPanel no te deja usar `public` como Document Root

Solo como alternativa:

1. Copia el contenido de `public/` al directorio publico del subdominio.
2. Edita `index.php` en ese directorio publico y ajusta rutas absolutas a `vendor/autoload.php` y `bootstrap/app.php` apuntando a la carpeta real del proyecto.

Esta alternativa funciona, pero la opcion recomendada siempre es apuntar el Document Root a `.../api-asamblea/public`.
