~/beer-and-code
▪ next event Workshop: Jev na Prática para Devs · 14 Oct · 19h — duração de 2h a 3h, ao vivo via Google Meet save your seat ›
~ / events / desafio-deploy-15-minutos-hostgator-e-aws $ _
Workshop Closed

Desafio: Deploy em 15 Minutos — Hostgator e AWS

## Deploy em 15 Minutos: Hostgator e AWS Encontro prático (ao vivo) do Beer and Code em que Danilo e Lucas "Virgo" fazem deploy de aplicações Laravel ao vivo em três cenários reais: host compartilhado (Hostgator, cPanel), VPS na AWS sem Docker (EC2 + Nginx +...

Event details
format workshop
when 20 Feb 2024
time 19h às 22h
status closed

Foi uma live de quase três horas, sem power point, direto no terminal. Danilo (CEO/CTO) e Lucas "Virgo" (engenheiro de software) dividiram a aula em três blocos crescentes de complexidade — host compartilhado, VPS crua e VPS com Docker — reaproveitando sempre os mesmos fundamentos de requisição HTTP, permissões e configuração de .env, para deixar claro que o Laravel em si já está pronto para produção; o que muda é a infraestrutura em volta dele.

Destaques

  • Hostgator (compartilhado): geração de chave SSH pelo cPanel, chmod 400 na chave, git clone via SSH (repositório privado), instalação do Composer sem binário global (rodado via PHP), e o bloqueio clássico de host compartilhado — sem Node instalável, os assets tiveram que ser buildados localmente e commitados numa branch separada para não sujar a main de um projeto open source.
  • Debug por camadas: o roteiro de erro 403 (Apache não sabe onde fica o public/index.php) → .htaccess com rewrite → erro 500 (agora é o Laravel reclamando) → tail -f storage/logs/laravel.log → APP_KEY ausente → .env criado a partir do .env.example → banco criado no assistente do cPanel.
  • AWS EC2 sem Docker: Amazon Linux 2023 (usa dnf, não apt), instalação de PHP 8.2 + extensões exigidas pelo Laravel, Nginx como web server (/etc/nginx/conf.d/*.conf, sem sites-available), usuário ec2-user incluído no grupo nginx, permissões 2775 em pastas e 644 em arquivos (nunca 777 — o problema do 777 é dar permissão de execução onde não deveria).
  • PostgreSQL na própria instância: initdb manual (Amazon Linux exige criação explícita das pastas), edição do pg_hba.conf de peer/ident para md5 para aceitar autenticação por senha, e o achado do socket do PHP-FPM via ps aux | grep php-fpm quando o Nginx devolvia bad gateway.
  • RDS como banco gerenciado: criação de instância PostgreSQL via RDS explicando o motivo de sair do banco na mesma máquina — separar o gargalo de CPU/memória da aplicação do gargalo do banco antes de precisar escalar cada um de forma independente.
  • AWS com Docker: segunda instância EC2 só com Docker e Git instalados, Dockerfile customizado (imagem base + PHP-FPM + Nginx + Supervisor rodando dentro do mesmo container, variáveis de ambiente para versão de Node/PHP, volume compartilhado para hot-reload sem rebuild), container se conectando ao RDS externo em vez de subir banco em container.
  • Segurança de rede: Security Group da AWS como firewall na frente da aplicação (porta 80/443 fechada por padrão), recomendação de restringir SSH e acesso ao banco por IP em vez de "0.0.0.0/0" em projetos reais.

Profundidade tecnica

O nível técnico foi de intermediário para avançado, com boas doses de "por que isso funciona assim" em vez de só copiar comando: explicação do ciclo de uma requisição HTTP (DNS → servidor web → PHP-FPM → aplicação) para ensinar a diagnosticar em qual camada um erro está acontecendo; diferença entre Amazon Linux 2023 (dnf) e Ubuntu (apt, www-data) nos mesmos passos de deploy; e uma explicação conceitual de imagem/container/volume do Docker antes de rodar o docker-compose up. Armadilhas reais discutidas: permissão 777 (execução indevida), esquecer o www. no domínio, confundir erro de infraestrutura com erro de aplicação, e a tentação de usar Kubernetes/ECS em projeto que não precisa disso — reforçando repetidamente que a arquitetura mais simples que resolve o problema é a certa, não a mais na moda.

Faça parte do Clã

Se esse tipo de aula ao vivo, sem cortes e com os erros de verdade acontecendo na sua frente é o seu formato de aprender, é exatamente isso que rola todo mês no Clã Beer and Code. Além dos encontros técnicos como este, você tem acesso a mentoria e a uma comunidade de devs Laravel que já passou (e resolveu) os mesmos problemas de deploy, infra e carreira que você vai enfrentar. Bora?

▪ Clã Beer and Code
Join the Clã. Build what matters.

AI Engineering has become a profession, and you learn it by building, not by watching. The Clã Beer and Code is where that happens live, every week: RAG, agents, observability and LLMOps in real projects, next to people already in production. It is paid, it is a subscription, and it is exactly the environment these sessions give you a taste of.

Join the Clã
Meet the Clã Beer and Code
playing