~/beer-and-code
~ / eventos / desafio-deploy-laravel-em-15-minutos $ _
Workshop Encerrado

Desafio: Deploy Laravel em 15 Minutos

Encontro prático de 3 horas em que Lucas Souza (Virgo) e Danilo Sampaio colocaram uma aplicação Laravel real no ar em três cenários diferentes: hospedagem compartilhada (KingHost, via cPanel), VPS do zero (DigitalOcean/Ubuntu) e deploy com Docker. Tudo ao vivo...

Ficha do evento
formato workshop
quando 24 Jan 2024
horário 19h às 22h
status encerrado

Foi um daqueles encontros em que o combinado era "vamos fazer o deploy junto, ao vivo, do jeito que dá errado de verdade". Lucas (Virgo) compartilhou a tela e foi literalmente seguindo o passo a passo escrito por ele mesmo, com o Danilo complementando o porquê de cada decisão — e a galera no chat perguntando em tempo real. Rolou até queda geral de internet no meio da aula e um repositório do Node que ficou fora do ar bem na hora do curl, o que virou aula extra de "como resolver imprevisto sem entrar em pânico".

Destaques

  • Shared hosting (KingHost/cPanel): ativação de SSH, criação de senha FTP (mesmo usuário do SSH), troca da versão do PHP, display_errors off em produção, deploy via Git com chave SSH gerada automaticamente pelo painel, composer install --no-dev --optimize-autoloader, uso de NVM (não dá pra instalar Node global em host compartilhado) e o clássico erro 403/500 por falta de .htaccess redirecionando pra public/.
  • Debug pelo caminho da requisição: erro do Apache (nem chegou no Laravel) vs. erro do Laravel (No application encryption key) — a virada de chave foi entender em qual camada a requisição parou, e usar tail -f storage/logs/laravel.log pra achar a causa real.
  • VPS do zero (DigitalOcean/Ubuntu): instalação manual de Nginx, PHP 8.2 + extensões exigidas pelo Laravel (bcmath, curl, mbstring, pgsql, tokenizer, xml, zip), Node via repositório oficial (que falhou ao vivo, resolvido caindo pro NVM), UFW liberando só as portas 22/80/443, criação de usuário não-root pra evitar rodar composer/npm como superuser, e o ajuste de permissões clássico (755 em diretórios, 644 em arquivos, 775 em storage/bootstrap/cache).
  • Nginx na mão: configuração de server_name, root apontando pra public/, index index.php e o bloco que redireciona .php pro PHP-FPM — sem copiar e colar sem entender, puxando a config oficial da doc do Laravel como base.
  • DNS e SSL: troca de nameservers na registradora pra apontar pra DigitalOcean, criação de registro A e CNAME (www), e emissão de certificado com Certbot pra dois hosts de uma vez — com a propagação de DNS travando o certificado ao vivo (lição: sempre antecipar a troca de nameserver antes da aula/evento).
  • Deploy com Docker: Dockerfile próprio (a imagem gerada pelo Sail não serve pra produção), docker compose -f prod.yml up -d --build, erro real de subir sem .env criado (Postgres recusando senha vazia), diferença entre force-recreate e apagar volumes de verdade, e configuração de proxy reverso com Nginx na própria VPS apontando pro container (explicado com a analogia do porteiro/recepcionista redirecionando pra o destino certo).

Profundidade técnica

O nível foi de "zero ao ar" mesmo: nada de atalho tipo Forge, Ploi ou Coolify — tudo feito manualmente pra expor as armadilhas reais (permissão de root, extensão de PHP faltando, .env inexistente, volume de Docker que não é recriado junto com o container, cache de config precisando ser regerado depois de mexer no .env). Ficou clara a diferença entre host compartilhado (limitado, sem Supervisor, sem Octane/RoadRunner, mas suficiente pra projeto pequeno), VPS (controle total, mais responsabilidade de segurança) e Docker (ambiente reprodutível, isola dependências, mas é "canhão pra matar formiga" em projeto simples). Também entrou tópicos de segurança prática: nunca usar sudo sem necessidade, preferir chave SSH a senha (com o causo real de droplet sequestrada pra minerar Bitcoin), e nunca subir servidor de e-mail próprio em produção.

Faça parte do Clã

Se você quer sair do "funciona na minha máquina" e aprender deploy de verdade — errando ao vivo, debugando na hora e entendendo cada camada da requisição — isso é só uma amostra do que rola dentro da comunidade. No Clã Beer and Code você tem acesso a encontros como esse, mentoria técnica direta com quem já apanhou (e resolveu) esses problemas em produção, e uma comunidade de devs Laravel que constrói junto. Bora pra dentro.

▪ Clã Beer and Code
Faça parte do Clã. Construa o que importa.

Engenharia de IA virou profissão, e se aprende construindo, não assistindo. O Clã Beer and Code é o ambiente onde isso acontece ao vivo, toda semana: RAG, agentes, observabilidade e LLMOps em projetos reais, ao lado de quem já está em produção. É pago, é assinatura, e é exatamente o ambiente que estes encontros dão uma amostra.

Entrar no Clã
tocando