Upload
allisson-azevedo
View
2.375
Download
0
Embed Size (px)
DESCRIPTION
Slides da palestra apresentada no mutirão python: https://plus.google.com/events/cf64tgv7l8g2fhe3gc1p417pqh8
Citation preview
DEPLOY COMPLETO DE UMA APLICAÇÃO DJANGO
Allisson Azevedo
Monday, May 13, 13
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
Monday, May 13, 13
Monday, May 13, 13
DEPLOY
Colocar sua aplicação em produção
“Botar o bicho para funcionar”
Monday, May 13, 13
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
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
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
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
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
POSTGRESQL OU MYSQL?
Dois ótimos servidores
Se for usar o MySQL, use a engine innodb nas tabelas
Monday, May 13, 13
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
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
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
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
OBJETIVO
Fazer o deploy da aplicação shortener
http://github.com/allisson/django-shortener-example
Monday, May 13, 13
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
MÃO NA MASSA!
Monday, May 13, 13
PERGUNTAS?
Monday, May 13, 13