06 - Deploy na AWS
Vamos subir o jogo da cobrinha na AWS!
Configurar as chaves de acesso a AWS
Faça o download do arquivo .pem enviado por email.
Depois, abra um terminal git bash para acessar a máquina na AWS via SSH com sua chave pem e IP público:
Atualize e Instale as dependências:
Agora, instale os pacotes necessários no servidor:
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv git nginx ufw -y
Configure o Firewall (UFW)
Liberamos apenas portas necessárias para segurança:
sudo ufw allow OpenSSH
sudo ufw allow 5000 # Para testar o Flask
sudo ufw allow 'Nginx Full' # Para a aplicação rodar na porta 80 depois
sudo ufw enable
Clonar o Código no Servidor
Agora, vamos trazer o código para o servidor:
🐍 Criar o Ambiente Virtual e Instalar Dependências
Agora, configuramos um ambiente virtual Python para evitar conflitos:
Configurar o Gunicorn para Rodar o Flask
Gunicorn é um servidor mais eficiente e seguro do que o Flask padrão.
Criamos um serviço para ele:
Coloque o seguinte conteúdo no editor:
[Unit]
Description=Gunicorn instance to serve snake game
After=network.target
[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/cobrinha
Environment="PATH=/home/ubuntu/cobrinha/venv/bin"
ExecStart=/home/ubuntu/cobrinha/venv/bin/gunicorn -w 3 -b 0.0.0.0:5000 backend:app
[Install]
WantedBy=multi-user.target
Salve (CTRL+X, Y, Enter) e inicie:
Se aparecer active (running), está funcionando!
Configurar o Nginx como Proxy Reverso
Agora, vamos configurar o Nginx para redirecionar a porta 80 para o Gunicorn.
Coloque o seguinte conteúdo alterando SEU_IP_PUBLICO pelo IP da sua instância:
server {
listen 80;
server_name SEU_IP_PUBLICO;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Salve e ative a configuração:
sudo ln -s /etc/nginx/sites-available/snake_game /etc/nginx/sites-enabled
sudo systemctl restart nginx
Reinicie a instância:
Espere uns 2 minutos até a instância subir novamente e acesse http://SEU_IP_PUBLICO:5000 no navegador!
Você fez o deploy da aplicação na AWS!
Vamos deixar o Servidor Seguro
acesse novamente a sua instância via terminal git bash
Desabilite o acesso direto à porta 5000
Agora que o Nginx está rodando, bloqueamos o acesso direto à API Flask:
Ative o firewall
Agora somente a porta 80 (HTTP) e a 22 (SSH) estarão abertas, garantindo segurança. Sua aplicação está disponível em alguns instantes, na porta 80, basta acessar http://SEU_IP_PUBLICO/

