DEPLOY COMPLETO DE UMA
APLICAÇÃO DJANGO
Allisson Azevedo
Monday, May 13, 13
Slide 2
Slide 2 text
ALLISSON AZEVEDO
Graduado em Licenciatura em Computação
Desenvolvedor Web
http://speakerdeck.com/allisson
http://slideshare.net/allisson
http://github.com/allisson
http://youtube.com/user/allissonazevedo
Monday, May 13, 13
Slide 3
Slide 3 text
Monday, May 13, 13
Slide 4
Slide 4 text
Monday, May 13, 13
Slide 5
Slide 5 text
DEPLOY
Colocar sua aplicação em produção
“Botar o bicho para funcionar”
Monday, May 13, 13
Slide 6
Slide 6 text
MAS EU SOU APENAS UM
DESENVOLVEDOR...
Desenvolvedores devem saber como funciona o
processo de deploy de sua aplicação
Provavelmente será sua responsabilidade
Simular o ambiente de produção localmente
Apenas em empresas grandes você vai ter um time
especializado em infra
Monday, May 13, 13
Slide 7
Slide 7 text
NÃO QUERO ESQUENTAR A
CABEÇA COM DEPLOY
Use um PAAS (Platform as a Service - Plataforma
como Serviço)
Heroku
AWS Elastic Beanstalk
EngineYard (sem suporte a python)
Google Appengine
Monday, May 13, 13
Slide 8
Slide 8 text
ONDE HOSPEDAR?
Não use servidores compartilhados (shared hosting)
Linode
1 Gb de ram, 24 Gb storage, 2 Tb transferência
$20
AWS EC2
Rackspace
Monday, May 13, 13
Slide 9
Slide 9 text
QUAL SISTEMA
OPERACIONAL?
Linux (GNU/Linux para não ofender ninguém)
Prefira distribuições com longo tempo de suporte
Ubuntu Server LTS (5 anos)
RHEL e CentOS (7 anos)
Monday, May 13, 13
Slide 10
Slide 10 text
PORQUE NGINX E NÃO
APACHE?
Apache
process-based (forking or threaded)
Nginx
asynchronous (event-driven)
http://daverecycles.com/post/3104767110/explain-
event-driven-web-servers-to-your-grandma
Monday, May 13, 13
Slide 11
Slide 11 text
POSTGRESQL OU MYSQL?
Dois ótimos servidores
Se for usar o MySQL, use a engine innodb nas tabelas
Monday, May 13, 13
Slide 12
Slide 12 text
CONECTANDO SUA
APLICAÇÃO
FastCGI
Geralmente a opção disponível em servidores
compartilhados
WSGI
Padrão do python (PEP 333)
http://allissonazevedo.com/2011/08/25/introducao-
ao-wsgi/
Monday, May 13, 13
Slide 13
Slide 13 text
GUNICORN (GREEN
UNICORN)
Port do Unicorn (ruby) para python
Servidor HTTP que suporta WSGI nativamente
“Python WSGI HTTP Server for UNIX. It's a pre-fork
worker model ported from Ruby's Unicorn project.”
Monday, May 13, 13
Slide 14
Slide 14 text
SUPERVISOR
É um sistema cliente/servidor que permite que os
usuários monitorem e controlem processos em
sistemas Unix like.
Não é executado para substituir o init padrão do
sistema operacional
Monday, May 13, 13
Slide 15
Slide 15 text
SENTRY
Plataforma para monitorar erros em uma aplicação
web
Escrito em Django
O cliente raven enviam as informações para o
servidor
Substituir o comportamento padrão de enviar um e-
mail no caso de exceção não tratada no Django
Monday, May 13, 13
Slide 16
Slide 16 text
OBJETIVO
Fazer o deploy da aplicação shortener
http://github.com/allisson/django-shortener-example
Monday, May 13, 13
Slide 17
Slide 17 text
O QUE VAMOS USAR?
Nginx para servir conteúdo estático e redirecionar as
requisições para o gunicorn
Gunicorn como servidor de aplicação
Supervisor para gerenciar os processos do gunicorn
Postgresql como banco de dados
Sentry para gerenciar possíveis erros em produção
Monday, May 13, 13