0% acharam este documento útil (0 voto)
20 visualizações42 páginas

Full Stack Python M23 Projeto Final

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
20 visualizações42 páginas

Full Stack Python M23 Projeto Final

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 42

Profissão:

Desenvolvedor Full
Stack Python
11
Continuous
Delivery
PythonAnywhere
O Pythonanywhere é Para criar essa
Vamos ajustar nosso projeto para uma plataforma cloud automação,
hospedá-lo no PythonAnywhere. para hospedagem de utilizaremos um
projetos em Python. webhook.

Lá, temos uma opção Mas o que é um


gratuita que servirá webhook?
para disponibilizar
nossa API.

3
PythonAnywhere
Os webhooks do Git são Em termos de deploy,
Vamos ajustar nosso projeto para gatilhos automatizados os webhooks do Git
hospedá-lo no PythonAnywhere. que podem enviar podem ser utilizados
notificações para outros para integrar o
sistemas quando ocorrem processo de
eventos específicos em um desenvolvimento com
repositório Git. Eles serviços de integração
permitem que ações contínua e contínua
automáticas sejam (CI/CD) ou com
acionadas em resposta a sistemas de
eventos como push de hospedagem de
código, criação de aplicativos.
branches, criação de tags,
entre outros.
4
PythonAnywhere
Por exemplo, ao realizar um Basicamente, os
Vamos ajustar nosso projeto para push em um repositório, webhooks do Git
hospedá-lo no PythonAnywhere. um webhook pode notificar ajudam a automatizar
um serviço de CI/CD para e agilizar o processo de
iniciar uma nova desenvolvimento, teste
construção e, em seguida, e implantação de
implantar código. Eles são uma
automaticamente a parte importante da
aplicação atualizada. prática DevOps,
permitindo integrações
mais fluidas entre
equipes de
desenvolvimento e
operações de TI.
5
PythonAnywhere
Pré requisito

Vamos ajustar nosso projeto para Vamos fazer algumas alterações no nosso projeto
hospedá-lo no PythonAnywhere. para que ele rode com sucesso no Pythonanywhere

1 - Crie uma nova branch chamado de


feat-pythonanywhere

2 - Atualize as dependências do nosso projeto:

Na raíz do projeto rode:

source env/bin/activate
poetry update psycopg2-binary
poetry add GitPython 6
PythonAnywhere
Pré requisito

Vamos ajustar nosso projeto para 3 - Atualize o build workflow do Github actions
hospedá-lo no PythonAnywhere.
Para mais detalhes, consulte o Gist ->
https://gist.github.com/drsantos20/b84cc0bca9c0832082007
43bfe356fa7

4 - Crie um pull request e faça o Merge na main branch

7
PythonAnywhere
1 - Crie uma conta no Pythonanywhere
https://www.pythonanywhere.com/registration/register/begin
Vamos ajustar nosso projeto para ner/
hospedá-lo no PythonAnywhere.
2 - Após confirmar seu cadastro no Pythonanywhere, a
seguinte página será apresentada:

8
PythonAnywhere
3 - (Opcional) Fique a vontade para navegar e conhecer o
Pythonanywhere, há um tour interativo disponível na página inicial
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere.
4 - Em “New console”, clique sobre o botão `$ Bash`

9
PythonAnywhere
5 - Um terminal será exibido, aqui faça o clone do seu projeto

Vamos ajustar nosso projeto para


hospedá-lo no PythonAnywhere.

Exemplo: git clone


https://github.com/drsantos20/bookstore.git >>> coloque o
endereço do seu repositório aqui

10
PythonAnywhere
6 - Crie um virtualenv (ambiente virtual Python para instalar
as dependências do nosso projeto)
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere. python3.10 -m venv env

source env/bin/activate

curl -sSL https://install.python-poetry.org | python3 -

cd bookstore

poetry install

11
PythonAnywhere
7 - Copie o endereço do ambiente virtual python criado no
passo 6
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere. (env) 17:45 ~/env $ pwd
/home/drsantos88/env

O endereço do meu
ambiente virtual é

/home/drsantos88/env

12
PythonAnywhere
Abra uma nova aba no seu navegador e acesse o Dashboard
(página principal) do Pythonanywhere e clique sobre o botão
Vamos ajustar nosso projeto para `Open web tab`
hospedá-lo no PythonAnywhere.

13
PythonAnywhere
Na página de webapps selecione `Add a new web app`

Vamos ajustar nosso projeto para


hospedá-lo no PythonAnywhere.

14
PythonAnywhere
Clique em `Next` e selecione `Manual configuration`

Vamos ajustar nosso projeto para


hospedá-lo no PythonAnywhere.

Selecione `Python 3.10` e clique em `Next >>` 15


PythonAnywhere
Você deverá ver a tela principal do nosso projeto
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere.

16
PythonAnywhere
8 - Na página do nosso projeto, vá para a área de Code e edit
o Source Code adicionando o caminho do nosso projeto
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere.

17
PythonAnywhere
Vá para a página virtualenv e cole o endereço do nosso
ambiente virtual
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere.

18
PythonAnywhere
9 - Abra nosso projeto novamente, vá para a main branch e
faça o pull para baixar as últimas alterações
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere.
10 - Abra o arquivo settings.py dentro do nosso projeto
bookstore e adicione o endereço do Pythonanywhere do seu
projeto:

19
PythonAnywhere
ALLOWED_HOSTS = ['localhost', '127.0.0.1',
'ebac-bookstore-api.herokuapp.com',
Vamos ajustar nosso projeto para
'drsantos20.pythonanywhere.com']
hospedá-lo no PythonAnywhere.

Para mais detalhes, veja o settings.py do meu projeto:


https://github.com/drsantos20/bookstore/blob/main/booksto
re/settings.py

Crie uma nova branch, abra um pull request e faca o merge


na main branch.

20
PythonAnywhere
11 - Acesse novamente o console do Pythonanywhere, gere
Vamos ajustar nosso projeto para uma nova chave pública para fazermos commit a partir do
hospedá-lo no PythonAnywhere. Pythonanywhere da seguinte forma:

ssh-keygen -t ed25519 -C
"[email protected]"

Obs: o email para a chave pública precisa ser o mesmo


email cadastrado no Github.

21
PythonAnywhere
Pressione `enter` em todos os passos até ver a seguinte
Vamos ajustar nosso projeto para mensagem:
hospedá-lo no PythonAnywhere.

22
PythonAnywhere
Sua chave será criada e estará disponível no caminho
Vamos ajustar nosso projeto para `~/.ssh/id_ed25519.pub`
hospedá-lo no PythonAnywhere.
Agora copie o conteúdo dessa chave com o comando

pbcopy < ~/.ssh/id_ed25519.pub

E então abra o seu Github e vá em Settings, navegue no menu a


esquerda e selecione SSH and GPG Keys

23
PythonAnywhere
Clique em new SSH Key.
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere.

24
PythonAnywhere
Dê um nome para sua chave, ex: pythonanywhere-pub-key e cole o
Vamos ajustar nosso projeto para conteúdo da sua chave no espaço Key e então clique em Add SSH
hospedá-lo no PythonAnywhere. Key

Volte para o terminal do Pythonanywhere e então execute:

git pull

25
PythonAnywhere
12 - Acesse a página principal do seu projeto no Pythonanywhere e
Vamos ajustar nosso projeto para clique sobre o botão Reload `seu_projeto.pythonanywhere.com`
hospedá-lo no PythonAnywhere.

26
PythonAnywhere
Agora tente acessar seu projeto navegando em
Vamos ajustar nosso projeto para https://seu_projeto.pythonanywhere.com
hospedá-lo no PythonAnywhere.

27
PythonAnywhere
Essa é a página que demonstra que nosso projeto está configurado
Vamos ajustar nosso projeto para corretamente no Pythonanywhere, mas agora precisamos fazer um
hospedá-lo no PythonAnywhere. pequeno ajuste para que o servidor sirva corretamente nossa API

Volte para a tela principal do nosso projeto, clique em


seu_projeto_pythonanywhere_com_wsgi.py perto da sessão de Code:

28
PythonAnywhere
O arquivo será exibido, limpe o conteúdo HTML inicial do arquivo e
Vamos ajustar nosso projeto para remova o comentário da sessão do Django
hospedá-lo no PythonAnywhere.

29
PythonAnywhere
Em path, coloque o endereço da pasta do seu projeto dentro do
Vamos ajustar nosso projeto para Pythonanywhere. Caso precise de ajuda, consulte o seguinte Gist
hospedá-lo no PythonAnywhere. para mais detalhes:
https://gist.github.com/drsantos20/696410aff5e2dc18a9cc95a2f460c6b6

Salve o arquivo no botão Salvar no topo da página. Volte para a


página principal do projeto e dê um reload

30
PythonAnywhere
Aguarde a reinicialização do seu projeto e acesse novamente
Vamos ajustar nosso projeto para https://seu_projeto.pythonanywhere.com agora devemos
hospedá-lo no PythonAnywhere. visualizar nossa API ao invés da página de Hello World padrão do
Pythonanywhere.

13 - Agora finalmente vamos automatizar nossos deploys no


Pythonanywhere sem a necessidade de fazermos o pull e
reload dentro da plataforma, para isso abra nosso projeto no
seu editor de preferencia. Crie uma nova branch chamado de
feat-automate-deploy e faça as seguintes mudanças:

31
PythonAnywhere
Crie um arquivo chamado views.py dentro de bookstore com o
Vamos ajustar nosso projeto para conteúdo disponibilizado no seguinte link
hospedá-lo no PythonAnywhere.
https://gist.github.com/drsantos20/d680bb91490a71ea5ac6b7659
00b4c97

Em views.py estamos criando um Django View que será notificado


pelo Github toda vez que houver uma mudança no nosso código.

Logo mais abaixo estamos criando um novo template para


visualizarmos de forma mais fácil as alterações que foram feitas
no nosso projeto.

Em bookstore/urls.py adicione uma nova rota chamado de


update_server/ 32
PythonAnywhere
Para mais detalhes consulte o link:
Vamos ajustar nosso projeto para https://gist.github.com/drsantos20/f727800ad7ed09b68b268d446
hospedá-lo no PythonAnywhere. df72370

Crie uma nova pasta chamada templates dentro de bookstore, o


caminho deverá ficar assim:

bookstore/templates/hello_world.html

Copie o conteúdo disponibilizado no link e cole no arquivo


hello_world.html

https://gist.github.com/drsantos20/0211d8006afdf463eccc5b082f1
21816
33
PythonAnywhere
Em bookstore/settings.py adicione as configurações do Django
Vamos ajustar nosso projeto para template conforme disponibilizado no link abaixo:
hospedá-lo no PythonAnywhere.

https://gist.github.com/drsantos20/a588d92e18e1599fc5592d38d7ac0174

Adicione todos os arquivos alterados, faça o commit e abra


34
um novo pull request.
PythonAnywhere
14 - Antes de fazer o commit, acesse o Github, e vá para as
Vamos ajustar nosso projeto para configurações do seu projeto
hospedá-lo no PythonAnywhere.
Acesse a aba de `Settings`

35
PythonAnywhere
Acesse Webhooks e clique em Add webhook
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere.

36
PythonAnywhere
Na página de cadastro do Webhook, insira as informações do
Vamos ajustar nosso projeto para endereço do seu projeto no Pythonanyhere no campo Payload URL
hospedá-lo no PythonAnywhere.
Exemplo: https://drsantos20.pythonanywhere.com/update_server/

37
PythonAnywhere
Vamos ajustar nosso projeto para
hospedá-lo no PythonAnywhere.

Por fim, clique no botão Add webhook no rodapé da página de


38
cadastro.
PythonAnywhere
15 - Volte para a página do pull request do Github e faça o
Vamos ajustar nosso projeto para merge do pull request aberto durante o passo 13.
hospedá-lo no PythonAnywhere.
Acesse agora nosso projeto navegando em
https://seu_projeto.pythonanywhere.com/hello e a página que
criamos no passo 13 deverá ser exibida com sucesso.

Exemplo: https://drsantos20.pythonanywhere.com/hello/

39
PythonAnywhere
Na página de webhook também será possível visualizar o
Vamos ajustar nosso projeto para último deploy feito via webhook pelo Github
hospedá-lo no PythonAnywhere.

40
PythonAnywhere
Caso tenha alguma dúvida, entre em contato com o suporte
Vamos ajustar nosso projeto para ao aluno da EBAC.
hospedá-lo no PythonAnywhere.
Até mais!

41
Bons estudos!

42

Você também pode gostar