# DEPLOY — Plataforma ONG
## `ong.ybycomunicacao.com.br` · VPS Hostgator · PHP 8.2 + Laravel 11

---

## Pré-requisitos

- Acesso SSH à VPS
- Domínio `ong.ybycomunicacao.com.br` apontando para o IP da VPS (registro A no DNS)
- PHP 8.2, Nginx e MySQL 8.0 instalados (ver `SETUP.md`)
- Composer instalado globalmente (`/usr/local/bin/composer`)

---

## Primeiro deploy (ambiente zerado)

### 1. Criar estrutura de diretórios

```bash
sudo mkdir -p /var/www/ong-plataforma
sudo chown $USER:$USER /var/www/ong-plataforma
```

### 2. Enviar o projeto para a VPS

**Opção A — rsync (recomendado para primeiro envio)**
```bash
rsync -avz --progress \
  --exclude=vendor \
  --exclude=node_modules \
  --exclude=.env \
  --exclude=.git \
  --exclude="storage/app/relatorios" \
  --exclude="storage/logs" \
  ./ usuario@IP_DA_VPS:/var/www/ong-plataforma/
```

**Opção B — Git**
```bash
ssh usuario@IP_DA_VPS
cd /var/www/ong-plataforma
git init
git remote add origin https://github.com/seu-usuario/ong-plataforma.git
git pull origin main
```

### 3. Instalar dependências

```bash
cd /var/www/ong-plataforma
composer install --no-dev --optimize-autoloader --no-interaction
```

### 4. Configurar o `.env`

```bash
cp .env.example .env
nano .env
```

Preencher obrigatoriamente:

```env
APP_ENV=production
APP_DEBUG=false
APP_URL=http://ong.ybycomunicacao.com.br

DB_HOST=127.0.0.1
DB_DATABASE=ybycom79_ong
DB_USERNAME=ybycom79_ong_admin
DB_PASSWORD=0nGadmin2026

SESSION_LIFETIME=480
```

### 5. Gerar chave da aplicação

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

### 6. Criar banco de dados

```bash
mysql -u root -p
```
```sql
-- Banco e usuário já provisionados pela Hostgator.
-- Apenas confirme o charset:
ALTER DATABASE ybycom79_ong
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;
EXIT;
```

### 7. Executar migrations e seeders

```bash
php artisan migrate --force
php artisan db:seed --force
```

### 8. Permissões de pastas e link do storage

```bash
sudo chown -R www-data:www-data /var/www/ong-plataforma
sudo chmod -R 755 /var/www/ong-plataforma
sudo chmod -R 775 /var/www/ong-plataforma/storage
sudo chmod -R 775 /var/www/ong-plataforma/bootstrap/cache

php artisan storage:link
```

### 9. Gerar ícones PWA

Requer extensão GD (`php8.2-gd`):
```bash
php artisan pwa:icons
```

### 10. Otimizar para produção

```bash
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan permission:cache-reset
```

### 11. Configurar Nginx

```bash
sudo nano /etc/nginx/sites-available/ong.ybycomunicacao.com.br
```

Cole o conteúdo do bloco `server` descrito no `SETUP.md` (seção 8), depois ative:

```bash
sudo ln -s /etc/nginx/sites-available/ong.ybycomunicacao.com.br \
           /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
```

### 12. Verificar instalação

```bash
curl -I http://ong.ybycomunicacao.com.br
# Esperado: HTTP/1.1 200 OK  (ou 302 redirect para /login)
```

---

## Deploy de atualização (versões futuras)

Use o script automatizado:

```bash
cd /var/www/ong-plataforma
bash deploy.sh
```

Ou manualmente:

```bash
# 1. Modo de manutenção
php artisan down --render="errors.503" --retry=60

# 2. Atualizar código
git pull origin main
# ou: rsync da máquina local (sem --delete para preservar .env e storage)

# 3. Dependências
composer install --no-dev --optimize-autoloader --no-interaction

# 4. Banco de dados
php artisan migrate --force

# 5. Cache
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan permission:cache-reset

# 6. Permissões
sudo chown -R www-data:www-data storage bootstrap/cache

# 7. Voltar ao ar
php artisan up
```

---

## Backup antes de cada deploy

```bash
# Banco de dados
mysqldump -u ybycom79_ong_admin -p ybycom79_ong \
  | gzip > ~/backups/ong-plataforma-$(date +%Y%m%d-%H%M).sql.gz

# Uploads (fotos de beneficiários)
tar -czf ~/backups/storage-$(date +%Y%m%d).tar.gz \
  /var/www/ong-plataforma/storage/app/public
```

---

## Variáveis de ambiente — referência completa

| Variável | Produção |
|---|---|
| `APP_ENV` | `production` |
| `APP_DEBUG` | `false` |
| `APP_URL` | `http://ong.ybycomunicacao.com.br` |
| `DB_CONNECTION` | `mysql` |
| `DB_DATABASE` | `ybycom79_ong` |
| `SESSION_LIFETIME` | `480` |
| `QUEUE_CONNECTION` | `sync` |
| `FILESYSTEM_DISK` | `public` |
| `LOG_LEVEL` | `error` |
| `BCRYPT_ROUNDS` | `12` |

---

## Usuários de acesso criados pelo seeder

| Perfil      | E-mail                               | Senha     |
|-------------|--------------------------------------|-----------|
| super_admin | super@yby.dev                        | senha@123 |
| admin       | admin@institutoitapoa.org.br         | senha@123 |
| gestor      | maria.gestora@institutoitapoa.org.br | senha@123 |
| tecnico     | ana.tecnica@institutoitapoa.org.br   | senha@123 |
| educador    | joao.educador@institutoitapoa.org.br | senha@123 |

> Altere todas as senhas imediatamente após o primeiro acesso em produção.

---

## Testes pré-deploy (checklist)

```bash
# Rodar suite de testes
php artisan test

# Verificar rotas
php artisan route:list | grep -v vendor

# Verificar configuração
php artisan config:show | grep APP_
```

---

## Rollback de emergência

```bash
# Reverter última migration
php artisan migrate:rollback --step=1

# Restaurar backup do banco
gunzip < ~/backups/ong-plataforma-YYYYMMDD-HHMM.sql.gz \
  | mysql -u ybycom79_ong_admin -p ybycom79_ong

# Reverter código (com Git)
git log --oneline -5       # ver commits
git checkout HASH_ANTERIOR -- .
php artisan config:cache && php artisan up
```

---

*Plataforma ONG — Yby Comunicação e Marketing*
*`ong.ybycomunicacao.com.br` · PHP 8.2 + Laravel 11 + MySQL 8.0*
