¿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:
No olviden activarlo$ virtualenv venv
Código:
Instalando dependencias$ source venv/bin/activate
Código:
Configurando base de datos(venv)$ pip install django
Primero necesitas instalar algunas dependencias:
Código:
Al final de tu archivo settings.py puedes poner el siguiente código para configurar tu base de datos en heroku.(venv)$ pip install psycopg2 dj-database-url
Código Python:
Ver original
import dj_database_url 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:
Creando requirements.txtweb: python manage.py runserver 0.0.0.0:$PORT --noreload
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:
Creando .gitignore(venv)$ pip freeze > requirements.txt
.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:
Pero ustedes pueden añadir mas reglas si lo requieren.venv *.pyc *.pyo
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:
Creando app en herokugit 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
Este paso solo se hace la primera vez.
Código:
Esto crea una app en heroku y te añade el remote de la app a tu repositorio.heroku create
Llevando a produccion
Una vez que tengas todo funcionando llevas a produccion tu app haciendo un push al remote heroku.
Código:
Sincronizando base de datosgit push heroku master
Una vez que tu app este en la nube, puedes sincronizar tu base de datos con:
Código:
Nota final:heroku run python manage.py syncdb
Heroku es un PaaS poderoso pero te restringe (por buenas razones) de hacer ciertas operaciones especialmente con la escritura de archivos.