Guia de reversão e deploy para cPanel

Objetivo

Este documento descreve passo a passo como reverter as modificações locais feitas para depuração em ambiente de desenvolvimento (XAMPP), e como preparar o projeto Laravel para subir para um servidor cPanel/produção.

Aviso

- Siga as etapas com cuidado. Faça backup do repositório/arquivos antes de qualquer ação.
- Não deixe `APP_DEBUG=true` em produção.

Arquivos alterados/localmente adicionados durante diagnóstico

- `public/.htaccess` — regras de rewrite adicionadas como mitigação local.
- `public/index.html` — fallback temporário (se existir) para redirecionar para `index.php`.
- `public/index.php` — foi revertido para o front controller padrão; se o seu arquivo local diferir, restaure a versão do repositório.
- `bootstrap/cache/config.php` e `bootstrap/cache/routes-v7.php` — renomeados para `*.bak` para forçar rebuild. Se presentes, remova os backups antes do deploy ou restaure os originais.
- `.env` — ALTERADO TEMPORARIAMENTE (APP_DEBUG=true) durante diagnóstico e revertido. Garanta as variáveis corretas para produção.
- `C:\xampp\apache\conf\extra\httpd-vhosts.conf` / `hosts` — entradas locais adicionadas (somente no ambiente de desenvolvimento Windows); não fazem parte do código-fonte do projeto.

Checklist de reversão antes do deploy para cPanel

1) Reverter alterações de configuração locais
- Se você tiver criado `public/index.html` como fallback, remova-o do repositório (ou não o envie para produção).
- Verifique `public/.htaccess`: mantenha apenas regras necessárias para Laravel em produção. Se você alterou para fins locais, restaure do repositório ou use a versão padrão abaixo (recomendado).

Conteúdo recomendado para `public/.htaccess` em produção (versão mínima Laravel):

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send requests to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [L]
</IfModule>

# php -- BEGIN cPanel-generated handler, do not edit
<IfModule mime_module>
  AddHandler application/x-httpd-php .php .php8 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

2) Restaurar/limpar caches
- Remova os arquivos `bootstrap/cache/*.bak` ou restaure os arquivos originais se você os sobrescreveu por engano.
- No servidor (cPanel) execute (via terminal ou script) no diretório do projeto:

  php artisan config:clear
  php artisan cache:clear
  php artisan route:clear
  php artisan view:clear

- Em seguida, opcionalmente gere caches (se desejar):

  php artisan config:cache
  php artisan route:cache
  php artisan view:cache

3) Variáveis de ambiente (.env)
- No servidor cPanel, crie o `.env` adequado (não comite o `.env` no Git).
- Configure:
  - APP_ENV=production
  - APP_DEBUG=false
  - APP_URL=https://seu-dominio
  - DB_* com credenciais de produção
  - MAIL_* e outras integrações
- Gere/defina `APP_KEY` se necessário:

  php artisan key:generate --show
  # copie o KEY retornado para o .env como APP_KEY=base64:...

4) Dependências e assets
- No servidor cPanel (ou local antes de enviar):
  - composer install --no-dev --optimize-autoloader
  - npm ci && npm run build (se você usa npm/Vite) — se não for possível executar no servidor, gere os assets localmente e envie `public/build`.

5) Permissões de diretórios
- Garanta permissão de escrita para `storage/` e `bootstrap/cache/` (por exemplo 755/775 conforme o provedor). Em cPanel, ajuste via File Manager se não houver SSH.

6) Banco de dados e migrations
- Rode as migrations e seeders conforme necessário:

  php artisan migrate --force
  php artisan db:seed --class=NomeSeeder --force

7) Logs e monitoramento
- Verifique `storage/logs/laravel.log` após deploy para erros.
- Habilite monitoramento apropriado.

8) Excluir arquivos e entradas locais
- Não envie alterações no `httpd-vhosts.conf` local e `hosts` (estes são do seu Windows/XAMPP).
- Remova qualquer arquivo `.bak` que não deva ir ao servidor.

Checklist de verificação pós-deploy

- Acesse `https://seu-dominio/` — página pública carrega (200).
- Teste endpoints críticos (ex: login, consultar protocolo, envio de formulário).
- Verifique `storage/logs/laravel.log` para novos erros.
- Confirme jobs/cron/queues (se aplicável).

Comandos úteis (Linux / cPanel SSH)

# entrar na pasta do projeto
cd ~/public_html || cd /home/usuario/public_html/seu_projeto

# instalar dependências
composer install --no-dev --optimize-autoloader

# gerar key
php artisan key:generate --force

# limpar e gerar cache (opcional)
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache

# migrar DB
php artisan migrate --force

Observações finais

- Faça deploy primeiro em um ambiente de staging, se possível.
- Não habilite debug em produção.
- Mantenha backups do banco e dos arquivos antes do deploy.

Se quiser, eu posso também:
- Gerar um script `deploy-for-cpanel.sh` com os comandos acima (adaptado para ser executado em SSH no cPanel),
- Ou uma checklist compacta em português para colar no painel de deploy do seu time.

---
Arquivo gerado por automação de diagnóstico — revise antes do uso em produção.
