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_errorsoff 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.htaccessredirecionando prapublic/. - 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 usartail -f storage/logs/laravel.logpra 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/npmcomo superuser, e o ajuste de permissões clássico (755em diretórios,644em arquivos,775emstorage/bootstrap/cache). - Nginx na mão: configuração de
server_name,rootapontando prapublic/,index index.phpe o bloco que redireciona.phppro 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.envcriado (Postgres recusando senha vazia), diferença entreforce-recreatee 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.
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ã