🌐 Add Portuguese translation for `docs/pt/docs/deployment/manually.md` (#12210)

This commit is contained in:
JoĂŁo Gustavo Rogel de Oliveira 2024-09-20 08:10:02 -03:00 committed by GitHub
parent 4e3db0b689
commit b1024e73be
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,169 @@
# Execute um Servidor Manualmente
## Utilize o comando `fastapi run`
Em resumo, utilize o comando `fastapi run` para inicializar sua aplicação FastAPI:
<div class="termy">
```console
$ <font color="#4E9A06">fastapi</font> run <u style="text-decoration-style:single">main.py</u>
<font color="#3465A4">INFO </font> Using path <font color="#3465A4">main.py</font>
<font color="#3465A4">INFO </font> Resolved absolute path <font color="#75507B">/home/user/code/awesomeapp/</font><font color="#AD7FA8">main.py</font>
<font color="#3465A4">INFO </font> Searching for package file structure from directories with <font color="#3465A4">__init__.py</font> files
<font color="#3465A4">INFO </font> Importing from <font color="#75507B">/home/user/code/</font><font color="#AD7FA8">awesomeapp</font>
╭─ <font color="#8AE234"><b>Python module file</b></font> ─╼
│ │
│ 🐍 main.py │
│ │
╰──────────────────────╯
<font color="#3465A4">INFO </font> Importing module <font color="#4E9A06">main</font>
<font color="#3465A4">INFO </font> Found importable FastAPI app
╭─ <font color="#8AE234"><b>Importable FastAPI app</b></font> ─╼
│ │
│ <span style="background-color:#272822"><font color="#FF4689">from</font></span><span style="background-color:#272822"><font color="#F8F8F2"> main </font></span><span style="background-color:#272822"><font color="#FF4689">import</font></span><span style="background-color:#272822"><font color="#F8F8F2"> app</font></span><span style="background-color:#272822"> </span> │
│ │
╰──────────────────────────╯
<font color="#3465A4">INFO </font> Using import string <font color="#8AE234"><b>main:app</b></font>
<font color="#4E9A06">╭─────────── FastAPI CLI - Production mode ───────────╼</font>
<font color="#4E9A06">│ │</font>
<font color="#4E9A06">│ Serving at: http://0.0.0.0:8000 │</font>
<font color="#4E9A06">│ │</font>
<font color="#4E9A06">│ API docs: http://0.0.0.0:8000/docs │</font>
<font color="#4E9A06">│ │</font>
<font color="#4E9A06">│ Running in production mode, for development use: │</font>
<font color="#4E9A06">│ │</font>
<font color="#4E9A06">│ </font><font color="#8AE234"><b>fastapi dev</b></font><font color="#4E9A06"> │</font>
<font color="#4E9A06">│ │</font>
<font color="#4E9A06">╰─────────────────────────────────────────────────────╯</font>
<font color="#4E9A06">INFO</font>: Started server process [<font color="#06989A">2306215</font>]
<font color="#4E9A06">INFO</font>: Waiting for application startup.
<font color="#4E9A06">INFO</font>: Application startup complete.
<font color="#4E9A06">INFO</font>: Uvicorn running on <b>http://0.0.0.0:8000</b> (Press CTRL+C to quit)
```
</div>
Isto deve funcionar para a maioria dos casos. 😎
VocĂȘ pode utilizar esse comando, por exemplo, para iniciar sua aplicação **FastAPI** em um contĂȘiner, em um servidor, etc.
## Servidores ASGI
Vamos nos aprofundar um pouco mais em detalhes.
FastAPI utiliza um padrĂŁo para construir frameworks e servidores web em Python chamado <abbr title="Asynchronous Server Gateway Interface">ASGI</abbr>. FastAPI Ă© um framework web ASGI.
A principal coisa que vocĂȘ precisa para executar uma aplicação **FastAPI** (ou qualquer outra aplicação ASGI) em uma mĂĄquina de servidor remoto Ă© um programa de servidor ASGI como o **Uvicorn**, que Ă© o que vem por padrĂŁo no comando `fastapi`.
Existem diversas alternativas, incluindo:
* <a href="https://www.uvicorn.org/" class="external-link" target="_blank">Uvicorn</a>: um servidor ASGI de alta performance.
* <a href="https://hypercorn.readthedocs.io/" class="external-link" target="_blank">Hypercorn</a>: um servidor ASGI compĂĄtivel com HTTP/2, Trio e outros recursos.
* <a href="https://github.com/django/daphne" class="external-link" target="_blank">Daphne</a>: servidor ASGI construĂ­do para Django Channels.
* <a href="https://github.com/emmett-framework/granian" class="external-link" target="_blank">Granian</a>: um servidor HTTP Rust para aplicaçÔes Python.
* <a href="https://unit.nginx.org/howto/fastapi/" class="external-link" target="_blank">NGINX Unit</a>: NGINX Unit é um runtime de aplicação web leve e versåtil.
## MĂĄquina Servidora e Programa Servidor
Existe um pequeno detalhe sobre estes nomes para se manter em mente. 💡
A palavra "**servidor**" Ă© comumente usada para se referir tanto ao computador remoto/nuvem (a mĂĄquina fĂ­sica ou virtual) quanto ao programa que estĂĄ sendo executado nessa mĂĄquina (por exemplo, Uvicorn).
Apenas tenha em mente que quando vocĂȘ ler "servidor" em geral, isso pode se referir a uma dessas duas coisas.
Quando se refere Ă  mĂĄquina remota, Ă© comum chamĂĄ-la de **servidor**, mas tambĂ©m de **mĂĄquina**, **VM** (mĂĄquina virtual), **nĂł**. Todos esses termos se referem a algum tipo de mĂĄquina remota, normalmente executando Linux, onde vocĂȘ executa programas.
## Instale o Programa Servidor
Quando vocĂȘ instala o FastAPI, ele vem com um servidor de produção, o Uvicorn, e vocĂȘ pode iniciĂĄ-lo com o comando `fastapi run`.
Mas vocĂȘ tambĂ©m pode instalar um servidor ASGI manualmente.
Certifique-se de criar um [ambiente virtual](../virtual-environments.md){.internal-link target=_blank}, ativĂĄ-lo e, em seguida, vocĂȘ pode instalar a aplicação do servidor.
Por exemplo, para instalar o Uvicorn:
<div class="termy">
```console
$ pip install "uvicorn[standard]"
---> 100%
```
</div>
Um processo semelhante se aplicaria a qualquer outro programa de servidor ASGI.
/// tip | "Dica"
Adicionando o `standard`, o Uvicorn instalarĂĄ e usarĂĄ algumas dependĂȘncias extras recomendadas.
Isso inclui o `uvloop`, a substituição de alto desempenho para `asyncio`, que fornece um grande aumento de desempenho de concorrĂȘncia.
Quando vocĂȘ instala o FastAPI com algo como `pip install "fastapi[standard]"`, vocĂȘ jĂĄ obtĂ©m `uvicorn[standard]` tambĂ©m.
///
## Execute o Programa Servidor
Se vocĂȘ instalou um servidor ASGI manualmente, normalmente precisarĂĄ passar uma string de importação em um formato especial para que ele importe sua aplicação FastAPI:
<div class="termy">
```console
$ uvicorn main:app --host 0.0.0.0 --port 80
<span style="color: green;">INFO</span>: Uvicorn running on http://0.0.0.0:80 (Press CTRL+C to quit)
```
</div>
/// note | "Nota"
O comando `uvicorn main:app` refere-se a:
* `main`: o arquivo `main.py` (o "mĂłdulo" Python).
* `app`: o objeto criado dentro de `main.py` com a linha `app = FastAPI()`.
É equivalente a:
```Python
from main import app
```
///
Cada programa de servidor ASGI alternativo teria um comando semelhante, vocĂȘ pode ler mais na documentação respectiva.
/// warning | "Aviso"
Uvicorn e outros servidores suportam a opção `--reload` que Ă© Ăștil durante o desenvolvimento.
A opção `--reload` consome muito mais recursos, é mais inståvel, etc.
Ela ajuda muito durante o **desenvolvimento**, mas vocĂȘ **nĂŁo deve** usĂĄ-la em **produção**.
///
## Conceitos de Implantação
Esses exemplos executam o programa do servidor (por exemplo, Uvicorn), iniciando **um Ășnico processo**, ouvindo em todos os IPs (`0.0.0.0`) em uma porta predefinida (por exemplo, `80`).
Esta Ă© a ideia bĂĄsica. Mas vocĂȘ provavelmente vai querer cuidar de algumas coisas adicionais, como:
* Segurança - HTTPS
* Executando na inicialização
* ReinicializaçÔes
* Replicação (o nĂșmero de processos em execução)
* MemĂłria
* Passos anteriores antes de começar
Vou te contar mais sobre cada um desses conceitos, como pensar sobre eles e alguns exemplos concretos com estratĂ©gias para lidar com eles nos prĂłximos capĂ­tulos. 🚀