Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/01/2013, 14:36
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 17 años, 5 meses
Puntos: 1360
[Aporte] Lleva a producción tu app hecha en Django con Heroku

Una de las razones por de haber escrito los tutoriales de virtualenv para windows y virtualenv para linux es para usarlos como punto de partida en este tutorial aporte sobre heroku.

¿Que es heroku?
Heroku es una plataforma como servicio (PaaS) en la nube que soporta varios lenguajes de programación.

Requisitos previos
  • Conocimiento en python
  • Conocimiento en el framework en este caso django
  • Conocimiento basico sobre git
  • virtualenv + pip
  • Cuenta en heroku.com (es gratis)

Instalando Heroku toolbelt
Para instalar heroku toolbelt ve a la pagina https://toolbelt.heroku.com/ la instalación es muy simple. Ya sea en windows o linux.

Creando entorno virtual
En la ruta de su proyecto ejecuten el siguiente comando para crear un entorno virtual.
Código:
$ virtualenv venv
No olviden activarlo
Código:
$ source venv/bin/activate
Instalando dependencias
Código:
(venv)$ pip install django
Configurando base de datos
Primero necesitas instalar algunas dependencias:
Código:
(venv)$ pip install psycopg2 dj-database-url
Al final de tu archivo settings.py puedes poner el siguiente código para configurar tu base de datos en heroku.

Código Python:
Ver original
  1. import dj_database_url
  2. DATABASES['default'] =  dj_database_url.config()

Heroku te ofrece por defecto una base de datos PostgreSQL con un limite de 10,000 registros. Con la posibilidad de aumentar el limite a cambio de un pequeño pago.

Configurando Procfile
Procfile es un mecanizmo para declarar que comandos son ejecutados por los dynos en tu app.

Para esto tienes que crear un archivo de texto llamado Procfile con el siguiente contenido:
Código:
web: python manage.py runserver 0.0.0.0:$PORT --noreload
Creando requirements.txt
Una vez instalado todos paquetes necesario para correr tu app, es necesario que crees un archivo llamado requirements.txt para que heroku pueda instalar todos los paquetes necesarios.

Para hacer esto hacemos simplemente:
Código:
(venv)$ pip freeze > requirements.txt
Creando .gitignore
.gitignore es un archivo de texto plano donde por cada linea puedes poner un patrón a ignorar una vez que tengamos el repositorio.

Usualmente el contenido de mi .gitignore es:
Código:
venv
*.pyc
*.pyo
Pero ustedes pueden añadir mas reglas si lo requieren.

Iniciando repositorio
Una vez hecho todo lo anterior podemos crear nuestro repositorio (no realmente el orden no importa, siempre y cuando sepas que estas haciendo).
Código:
git init # Iniciamos el repositorio
git add . # Añadirmos todos los archivos al indice
git commit -m 'Initial Commit' # Hago el primer commit, para guardar todos los cambios
Creando app en heroku
Este paso solo se hace la primera vez.
Código:
heroku create
Esto crea una app en heroku y te añade el remote de la app a tu repositorio.

Llevando a produccion
Una vez que tengas todo funcionando llevas a produccion tu app haciendo un push al remote heroku.

Código:
git push heroku master
Sincronizando base de datos
Una vez que tu app este en la nube, puedes sincronizar tu base de datos con:
Código:
heroku run python manage.py syncdb
Nota final:
Heroku es un PaaS poderoso pero te restringe (por buenas razones) de hacer ciertas operaciones especialmente con la escritura de archivos.

Última edición por razpeitia; 06/01/2013 a las 15:54