19
DEPLOY COMPLETO DE UMA APLICAÇÃO DJANGO Allisson Azevedo Monday, May 13, 13

Deploy completo de uma aplicação Django

Embed Size (px)

DESCRIPTION

Slides da palestra apresentada no mutirão python: https://plus.google.com/events/cf64tgv7l8g2fhe3gc1p417pqh8

Citation preview

Page 1: Deploy completo de uma aplicação Django

DEPLOY COMPLETO DE UMA APLICAÇÃO DJANGO

Allisson Azevedo

Monday, May 13, 13

Page 2: Deploy completo de uma aplicação Django

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

Page 3: Deploy completo de uma aplicação Django

Monday, May 13, 13

Page 4: Deploy completo de uma aplicação Django

Monday, May 13, 13

Page 5: Deploy completo de uma aplicação Django

DEPLOY

Colocar sua aplicação em produção

“Botar o bicho para funcionar”

Monday, May 13, 13

Page 6: Deploy completo de uma aplicação Django

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

Page 7: Deploy completo de uma aplicação Django

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

Page 8: Deploy completo de uma aplicação Django

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

Page 9: Deploy completo de uma aplicação Django

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

Page 11: Deploy completo de uma aplicação Django

POSTGRESQL OU MYSQL?

Dois ótimos servidores

Se for usar o MySQL, use a engine innodb nas tabelas

Monday, May 13, 13

Page 12: Deploy completo de uma aplicação Django

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

Page 13: Deploy completo de uma aplicação Django

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

Page 14: Deploy completo de uma aplicação Django

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

Page 15: Deploy completo de uma aplicação Django

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

Page 16: Deploy completo de uma aplicação Django

OBJETIVO

Fazer o deploy da aplicação shortener

http://github.com/allisson/django-shortener-example

Monday, May 13, 13

Page 17: Deploy completo de uma aplicação Django

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

Page 18: Deploy completo de uma aplicação Django

MÃO NA MASSA!

Monday, May 13, 13

Page 19: Deploy completo de uma aplicação Django

PERGUNTAS?

Monday, May 13, 13