Publicar um projeto Laravel em hospedagem compartilhada
O ponto central é fazer o domínio apontar para a pasta public do projeto, e não para a raiz dele. Envie o projeto para uma pasta fora da área pública, aponte a raiz do domínio para a public dentro dela e mantenha o restante — arquivo de ambiente, storage, vendor — fora do alcance do navegador. Só isso já separa uma instalação segura de uma que expõe as suas credenciais.
A pasta que o domínio deve apontar
Frameworks modernos concentram tudo o que pode ser aberto pelo navegador em uma única pasta pública: o arquivo de entrada, o CSS, o JavaScript e as imagens. Todo o resto — código, configuração, dependências, logs — fica um nível acima. Publicar o projeto inteiro dentro da pasta pública inverte esse desenho e deixa o arquivo de ambiente, com usuário e senha do banco, acessível por endereço direto.
No painel, isso é feito editando a raiz do domínio ou criando o domínio já apontando para o caminho terminado em /public.
Quando não dá para mudar a raiz
Se o plano não permite alterar a raiz do domínio principal, a alternativa aceitável é manter o projeto fora da área pública e colocar na área pública apenas o conteúdo da pasta public, ajustando no arquivo de entrada os dois caminhos que ele monta para encontrar o restante do projeto. Funciona, mas exige atenção a cada atualização. Mover a raiz continua sendo a opção preferível.
O que não é aceitável é deixar o projeto inteiro exposto e tentar bloquear pasta por pasta com regras de reescrita: basta uma regra esquecida para o arquivo de ambiente vazar.
O que enviar e o que gerar no servidor
Envie o código e as dependências. Não envie a pasta de cache do framework nem os arquivos gerados durante o desenvolvimento. Depois de enviar, resta um roteiro curto:
- Crie o arquivo de ambiente a partir do modelo de exemplo e preencha banco, endereço do site e credenciais de e-mail.
- Gere a chave da aplicação — sem ela, nada que dependa de criptografia funciona, e a sessão não se mantém.
- Rode as migrações do banco.
- Crie o vínculo da pasta de arquivos enviados para que eles fiquem acessíveis pela área pública.
- Gere o cache de configuração e de rotas, que reduz bastante o tempo de resposta em produção.
Erros comuns na primeira publicação
Tela branca logo após publicar costuma ser permissão de escrita faltando nas pastas de cache e de logs. Erro de chave ausente é o arquivo de ambiente sem a chave gerada. CSS e imagens quebrados quase sempre são o endereço do site configurado errado no arquivo de ambiente, ou diferença entre maiúsculas e minúsculas em nomes de arquivo, que a sua máquina perdoava e o servidor não.
Antes de qualquer outra investigação, deixe a exibição de erros desligada no ambiente de produção e leia o log do próprio framework: a causa está escrita inteira lá, com arquivo e linha.