# DEPLOYMENT.md

## Requisitos de producao

- Servidor Linux com cPanel.
- PHP 8.3 ou superior.
- MySQL 8+.
- Composer.
- Extensoes PHP: bcmath, ctype, curl, dom, fileinfo, gd, mbstring, openssl, pdo_mysql, tokenizer, xml, zip.

## Instalacao

1. Envie os arquivos do projeto para uma pasta fora de `public_html`, quando possivel.
2. Aponte o DocumentRoot do dominio/subdominio para a pasta `public` do Laravel.
3. Crie o banco MySQL no cPanel.
4. Copie `.env.example` para `.env` e configure APP_URL, DB_DATABASE, DB_USERNAME e DB_PASSWORD.
5. Se o pacote enviado ja contiver `vendor`, nao e obrigatorio rodar Composer. Se precisar reinstalar dependencias, execute `composer install --no-dev --optimize-autoloader`.
6. Execute `php artisan key:generate`.
7. Execute `php artisan migrate --seed --force`.
8. Execute `php artisan storage:link`.
9. Execute `php artisan config:cache`, `php artisan route:cache` e `php artisan view:cache`.
10. Configure APP_ENV=production e APP_DEBUG=false.

## Quando o cPanel nao permite alterar DocumentRoot

Nao exponha `.env`, `vendor`, `storage`, `database` ou arquivos internos em `public_html`. Use uma estrutura em que apenas o conteudo da pasta `public` fique acessivel e ajuste o `index.php` para apontar para a aplicacao fora da raiz publica.

## Permissoes

Garanta escrita em `storage` e `bootstrap/cache`. Nao conceda permissoes amplas a arquivos sensiveis.

## Backup

Backup minimo: dump do banco MySQL, pasta `storage/app/public`, arquivo `.env`, versao do codigo em producao e `composer.lock`.
