---
# System prepended metadata

title: 24 Deploy
tags: [web, day3]

---

---
tags: web,day3
robots: noindex, nofollow
lang: pt-br
---

# 24 Deploy

A partir do momento em que temos uma aplicação web Python pronta para
produção chega a hora de fazer o deploy, o deploy geralmente é um
processo automatizado via uma esteira de CI/CD, este tipo de deploy automatizado será tema de uma aula no treinamento Python Automação e Devops que também faz parte aqui do pacote Python Expert.

Aqui no treinamento Python web nós veremos os fundamentos do deploy
de aplicações web Python utilizando 3 abordagens mais comuns e o
processo será primeiramente feito manualmente pois é muito importante você conhecer o processo manual para que possa depois dominar o processo automatizado.

Depois de entender o processo manual iremos utilizar o Ansible para
automatizar as tarefas de configuração do deploy.

As 3 principais abordagens que veremos aqui serão:

- VM
    - Instalamos a Virtual Machine com Linus
    - Configuramos os pacotes necessários
    - Configuramos a APP Python
    - Configuramos o web server NGINX
- Managed Service
    - Vamos usar o Heroku + git para um deploy semi automático
- Container / Kubernetes
    - Containerizamos nossa aplicação
    - Criamos um deployment K8s
    - Conectamos a um Cluster k8s
    - Fazemos o apply do deploy da aplicação


## O protocolo WSGI e a Arquitetura APP e WEB servers

Lá no comecinho do treinamento falamos sobre WSGI e também sobre web server e proxy reverso, agora vamos relembrar o papel de cada um deles nesta arquitetura:

![](https://github.com/rochacbruno/python-web-api/raw/day3/docs/day3/imgs/wsgi.png)


Os componentes principais desta stack são:

- SERVIDOR (linux)
    - Instalaremos um Linux e todos os pacotes requeridos
- APP em ambiente Python (django, flask, fastapi, etc)
    - Criaremos o ambiente virtual Python 
    - Instalaremos todas as dependencias
    - Criaremos os diretórios e configurações necessárias
- APP SERVER WSGI (gunicorn) ou ASGI (uvicorn)
    - Iniciamos um daemon que faz o Gateway da aplicação Python e serve em um socket
- WEB SERVER (nginx)
    - Configuramos um proxy reverso que expoe o socket do APP server em portas web como 80 e 443

Esses 3 componentes precisam ser instalados em um servidor e Linux é o sistema operacional mais comum para aplicações Python.
