# Guia de Instalação - WhatsApp Offers System (PHP + Apache)

Este guia descreve como instalar e configurar o WhatsApp Offers System em um servidor Ubuntu com Apache e PHP 8.4.5.

## Pré-requisitos

Certifique-se de ter instalado:
- Apache 2.4+
- PHP 8.4.5 com mod_php
- MySQL 5.7+
- curl (para requisições HTTP)

## Passo 1: Preparar o Banco de Dados

### 1.1 Criar o banco de dados

```bash
mysql -h 192.168.10.17 -u root -p < database_setup.sql
```

Quando solicitado, digite a senha: `Vmsrv03@banco#.`

### 1.2 Verificar a conexão

```bash
mysql -h 192.168.10.17 -u root -p -e "USE whatsapp_offers_db; SHOW TABLES;"
```

Você deve ver 7 tabelas criadas.

## Passo 2: Preparar o Servidor Apache

### 2.1 Instalar Apache e PHP (se não tiver)

```bash
sudo apt-get update
sudo apt-get install -y apache2 php8.4 php8.4-mysql php8.4-curl php8.4-json php8.4-mbstring
```

### 2.2 Ativar mod_rewrite

```bash
sudo a2enmod rewrite
sudo systemctl restart apache2
```

### 2.3 Criar diretório para a aplicação

```bash
sudo mkdir -p /var/www/whatsapp-offers
sudo chown -R $USER:$USER /var/www/whatsapp-offers
```

## Passo 3: Instalar a Aplicação

### 3.1 Copiar arquivos

```bash
# Se você tem o arquivo ZIP
unzip whatsapp-offers-php.zip -d /var/www/whatsapp-offers

# Ou copiar diretamente
cp -r /caminho/local/whatsapp-offers-php/* /var/www/whatsapp-offers/
```

### 3.2 Definir permissões

```bash
sudo chown -R www-data:www-data /var/www/whatsapp-offers
sudo chmod -R 755 /var/www/whatsapp-offers
sudo chmod -R 777 /var/www/whatsapp-offers/logs
sudo chmod -R 777 /var/www/whatsapp-offers/public/uploads
```

## Passo 4: Configurar Apache

### 4.1 Criar arquivo de configuração do Virtual Host

```bash
sudo nano /etc/apache2/sites-available/whatsapp-offers.conf
```

Adicione o seguinte conteúdo:

```apache
<VirtualHost *:80>
    ServerName localhost
    ServerAlias whatsapp-offers.local
    
    DocumentRoot /var/www/whatsapp-offers/public
    
    <Directory /var/www/whatsapp-offers/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        
        # Rewrite rules para roteamento
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteBase /
            
            # Não reescrever arquivos e diretórios reais
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            
            # Reescrever para index.php
            RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
        </IfModule>
    </Directory>
    
    # Logs
    ErrorLog ${APACHE_LOG_DIR}/whatsapp-offers-error.log
    CustomLog ${APACHE_LOG_DIR}/whatsapp-offers-access.log combined
    
    # Segurança
    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>
```

### 4.2 Ativar o site

```bash
sudo a2ensite whatsapp-offers.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
```

Se retornar "Syntax OK", reinicie o Apache:

```bash
sudo systemctl restart apache2
```

## Passo 5: Configurar PHP

### 5.1 Editar php.ini

```bash
sudo nano /etc/php/8.4/apache2/php.ini
```

Procure e altere as seguintes configurações:

```ini
; Tamanho máximo de upload
upload_max_filesize = 50M
post_max_size = 50M

; Timezone
date.timezone = America/Sao_Paulo

; Display errors (apenas em desenvolvimento)
display_errors = On
error_reporting = E_ALL
```

### 5.2 Reiniciar Apache

```bash
sudo systemctl restart apache2
```

## Passo 6: Configurar a Aplicação

### 6.1 Editar arquivo de configuração

```bash
nano /var/www/whatsapp-offers/config/config.php
```

Verifique as seguintes configurações:

```php
define('APP_URL', 'http://localhost');
define('APP_DEBUG', true); // Mude para false em produção
define('JWT_SECRET', 'sua-chave-secreta-aqui-mude-isso');
```

### 6.2 Editar configuração do banco de dados

```bash
nano /var/www/whatsapp-offers/config/database.php
```

Verifique se as credenciais estão corretas:

```php
define('DB_HOST', '192.168.10.17');
define('DB_PORT', 3306);
define('DB_USER', 'root');
define('DB_PASS', 'Vmsrv03@banco#.');
define('DB_NAME', 'whatsapp_offers_db');
```

## Passo 7: Testar a Instalação

### 7.1 Acessar a aplicação

Abra seu navegador e acesse:

```
http://localhost
```

Você deve ver a página de login.

### 7.2 Fazer login

Use as credenciais padrão:
- **Usuário**: admin
- **Senha**: admin123

### 7.3 Verificar permissões

Se receber erro de permissão, execute:

```bash
sudo chmod -R 777 /var/www/whatsapp-offers/logs
sudo chmod -R 777 /var/www/whatsapp-offers/public/uploads
```

## Passo 8: Configurar Domínio (Opcional)

### 8.1 Editar /etc/hosts

```bash
sudo nano /etc/hosts
```

Adicione:

```
127.0.0.1 whatsapp-offers.local
```

### 8.2 Atualizar configuração do Apache

```bash
sudo nano /etc/apache2/sites-available/whatsapp-offers.conf
```

Mude `ServerName localhost` para `ServerName whatsapp-offers.local`

### 8.3 Reiniciar Apache

```bash
sudo systemctl restart apache2
```

Agora acesse: `http://whatsapp-offers.local`

## Troubleshooting

### Erro: "Permission denied"

```bash
sudo chown -R www-data:www-data /var/www/whatsapp-offers
sudo chmod -R 755 /var/www/whatsapp-offers
sudo chmod -R 777 /var/www/whatsapp-offers/logs
```

### Erro: "Cannot connect to database"

Verifique:
1. Se MySQL está rodando: `sudo systemctl status mysql`
2. Se as credenciais estão corretas
3. Se o host é acessível: `mysql -h 192.168.10.17 -u root -p`

### Erro: "Rewrite rules not working"

Certifique-se de que mod_rewrite está ativado:

```bash
sudo a2enmod rewrite
sudo apache2ctl configtest
sudo systemctl restart apache2
```

### Erro: "PHP not found"

Verifique se PHP está instalado:

```bash
php -v
php -m | grep mysql
```

Se não estiver, instale:

```bash
sudo apt-get install -y php8.4 php8.4-mysql php8.4-curl
```

## Configuração para Produção

### 1. Desabilitar modo debug

```bash
nano /var/www/whatsapp-offers/config/config.php
```

Mude:
```php
define('APP_DEBUG', false);
```

### 2. Usar HTTPS

```bash
sudo apt-get install -y certbot python3-certbot-apache
sudo certbot --apache -d seu-dominio.com
```

### 3. Configurar firewall

```bash
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
```

### 4. Fazer backup regular

```bash
# Backup do banco de dados
mysqldump -h 192.168.10.17 -u root -p whatsapp_offers_db > backup.sql

# Backup dos arquivos
tar -czf whatsapp-offers-backup.tar.gz /var/www/whatsapp-offers
```

## Estrutura de Diretórios

```
/var/www/whatsapp-offers/
├── public/                 # Raiz do servidor web
│   ├── index.php          # Roteador principal
│   ├── dashboard.html     # Páginas HTML
│   ├── products.html
│   ├── contacts.html
│   ├── campaigns.html
│   ├── history.html
│   ├── .htaccess          # Configuração Apache
│   ├── assets/
│   │   ├── css/           # Arquivos CSS
│   │   ├── js/            # Arquivos JavaScript
│   │   ├── images/        # Imagens
│   │   └── uploads/       # Uploads de usuários
│   └── index.html         # Página de login
├── api/                   # Endpoints da API (não necessário, tudo em public/index.php)
├── includes/              # Classes PHP
│   ├── Auth.php
│   ├── Product.php
│   ├── Contact.php
│   └── Campaign.php
├── config/                # Configurações
│   ├── config.php
│   └── database.php
├── logs/                  # Arquivos de log
├── database_setup.sql     # Script SQL
└── README.md              # Documentação
```

## Próximos Passos

1. **Conectar WhatsApp**: Configure sua instância Evolution API
2. **Sincronizar Contatos**: Importe seus contatos do WhatsApp
3. **Cadastrar Produtos**: Crie suas ofertas
4. **Enviar Ofertas**: Dispare campanhas para seus contatos

---

**Versão**: 1.0.0  
**PHP**: 8.4.5  
**Apache**: 2.4+  
**MySQL**: 5.7+
