1. DEPLOY COMPLETO DE UMA
APLICAÇÃO DJANGO
Allisson Azevedo
Monday, May 13, 13
2. 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
6. 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
7. 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
8. 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
9. 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
10. 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
11. POSTGRESQL OU MYSQL?
Dois ótimos servidores
Se for usar o MySQL, use a engine innodb nas tabelas
Monday, May 13, 13
12. 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
13. 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
14. 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
15. 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
16. OBJETIVO
Fazer o deploy da aplicação shortener
http://github.com/allisson/django-shortener-example
Monday, May 13, 13
17. O QUEVAMOS 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