Deploy de uma aplicação Django no Pythonanywhere
Links da documentação oficial:
https://docs.djangoproject.com/pt-br/1.11/intro/reusable-apps/
Para baixar o código como está até agora, acesse o meu github no link abaixo:
https://github.com/toticavalcanti/django_course/tree/deploy
DEPLOY
AGORA VOCÊ CRIOU (E TESTOU) UMA APP LOCALMENTE, VOCÊ VAI QUERER INSTALÁ-LA EM UM SERVIDOR WEB PÚBLICO PARA QUE ELA POSSA SER ACESSADA PELAS PESSOAS NA WEB
PARA ISSO VAMOS:
- FAZER ALGUMAS ALTERAÇÕES NAS CONFIGURAÇÕES DO PROJETO;
- ESCOLHER UM AMBIENTE PARA HOSPEDAR O APLICATIVO DJANGO;
- ESCOLHER UM AMBIENTE PARA HOSPEDAR QUALQUER ARQUIVO ESTÁTICO;
CONFIGURAR A INFRAESTRUTURA DE SERVIDOR DO SEU AMBIENTE DE PRODUÇÃO PARA A APP.
O QUE É UM AMBIENTE DE PRODUÇÃO?
- O AMBIENTE DE PRODUÇÃO É O AMBIENTE FORNECIDO PELO COMPUTADOR SERVIDOR NO QUAL VOCÊ EXECUTARÁ SUA APP DJANGO PARA CONSUMO EXTERNO
O AMBIENTE INCLUI:
- HARDWARE
- SISTEMA OPERACIONAL (POR EXEMPLO, LINUX, WINDOWS)
- INTERPRETADOR/COMPILADOR (PYTHON) E BIBLIOTECAS
- SERVIDOR DA WEB USADO PARA AS PÁGINAS E OUTROS CONTEÚDOS (POR EXEMPLO, NGINX, APACHE)
- SERVIDOR DE APLICATIVOS
- BANCOS DE DADOS
PYTHONANYWHERE É UM AMBIENTE DE DESENVOLVIMENTO INTEGRADO (IDE) E SERVIÇO DE HOSPEDAGEM WEB BASEADO NA LINGUAGEM DE PROGRAMAÇÃO PYTHON.
UTILIZAREMOS O PLANO FREE.
É NECESSÁRIO LEMBRAR QUE ESTE PLANO, POR SER GRÁTIS, TEM CERTAS LIMITAÇÕES.
ACESSE O LINK ABAIXO E CRIE SUA CONTA:
https://www.pythonanywhere.com/pricing/
ESCOLHA A OPÇÃO:
CREATE A BEGINNER ACCOUNT PARA A CONTA GRÁTIS OU OUTRA OPÇÃO QUE QUEIRA.
AGORA É SÓ PREENCHER O CADASTRO PARA CRIAR LOGIN E SENHA.
ADICIONE UM PROCFILE NA RAIZ DO PROJETO NO MESMO NÍVEL DO:
manage.py
A ÁRVORE DE PASTAS DO PROJETO TÁ MAIS OU MENOS ASSIM
-mysite
-mysite/
– django-polls /
manage.py
ADICIONE UM PROCFILE NA RAIZ DO PROJETO NO MESMO NÍVEL DO:
manage.py
ÁRVORE DE PASTAS DO PROJETO TÁ MAIS OU MENOS ASSIM
-mysite
-mysite/
– django-polls /
manage.py
Procfile
CONTEÚDO DO Procfile
web: gunicorn mysite.wsgi:django-polls --log-file -
O QUE É O GUNICORN?
Gunicorn ‘Green Unicorn’ é o servidor HTTP Python WSGI (Web Server Gateway Interface), ou Interface de Porta de Entrada do Servidor Web, para UNIX. É um modelo de worker (trabalhador) derivado do Ruby’s Unicorn project. O servidor Gunicorn é amplamente compatível com vários frameworks web, simples implementação, leve em recursos de servidor e bastante rápido.
O QUE É O NGINX?
É um servidor web (HTTP e IMAP/POP3/Proxy), ele é um software que processa as solicitações (requests) dos usuários da rede garantindo que a troca de informações seja efetuada.
O Nginx é encarregado de resolver as solicitações (requests) web realizada pelo cliente, reenviando para que o Gunicorn possa processá-las utilizando varios workers.
Cada worker é capaz de se comunicar com a aplicação Django de maneira que se possa atender múltiplas solicitações (requests) ao mesmo tempo, mantendo um bom tempo de resposta.
ADICIONE O ARQUIVO requirements.txt, NA MESMA PASTA DO Procfile e manage.py, COM TODOS OS REQUISITOS, OU SEJA, NA RAIZ DO PROJETO.
-mysite
-mysite/
– django-polls /
manage.py
Procfile
requirements.txt
COMANDO PRA GERAR O requirements.txt
COM O AMBIENTE VIRTUAL ATIVADO RODE:
pip freeze > requirements.txt
CONTEÚDO DO requirements.txt
dj-database-url==0.5.0
-e git://github.com/django/django.git@57fd3700d4f5a7887ad3967fe19b61bc9f25b2f3#egg=Django
django-admin-interface==0.7.0
django-colorfield==0.1.15
django-flat-responsive==2.0
django-flat-theme==1.1.4
django-polls==0.1
gunicorn==19.9.0
#pkg-resources==0.0.0
psycopg2==2.7.5
pytz==2018.5
CRIE TAMBÉM O runtime.txt PARA ESPECIFICAR A VERSÃO CORRETA DO PYTHON, CRIE ELE NA RAIZ DO PROJETO.
-mysite
-mysite/
– django-polls /
manage.py
Procfile
requirements.txt
runtime.txt
CONTEÚDO DO runtime.txt
python-3.6
CONFIGURE OS PARÂMETROS RELACIONADOS AOS ARQUIVOS ESTÁTICOS EM settings.py
STATIC_URL = ‘/static/’
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/dev/howto/static-files/
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, ‘static’))
PARA MAIORES DETALHES DE COMO COLOCAR NO AR O PROJETO, VEJA O VÍDEO DESSA AULA.
LEMBRE-SE QUE O CÓDIGO TÁ DISPONÍVEL EM:
https://github.com/toticavalcanti/django_course/tree/deploy
E QUE VOCÊ VAI PRECISAR ABRIR UMA CONTA NO GITHUB PARA COLOCAR SEU PROJETO E DEPOIS SUBIR PARA O PYTHONANYWHERE.
DEPOIS DE CRIAR UMA CONTA NO GITHUB, ENTRE NA PASTA QUE QUER COLOCAR O PROJETO E CLONE O PROJETO DO MEU GITHUB .
Ex.
#Cria a pasta de projetos django mkdir projetos_django
#Entra na pasta projetos_django cd projetos_django
#Para clonar uma branch específica em um repositório github, gitlab, BitBucket, etc, use:
git clone -b <branch> <remote_repo>
ENTÃO NO CASO DO MEU GITHUB VOCÊ VAI FAZER O CLONE DA BRANCH DEPLOY.
#Agora é só clonar o projeto do meu github, da branch deploy, com o comando:
git clone -b deploy git@github.com:toticavalcanti/django_course.git