Sube tu proyecto Django a Heroku en 7 pasos
Paso #1 — Instalar las librerias necesarias
Con tu entorno virtual activado instala lo siguiente:
(myvenv) $ pip install dj-database-url gunicorn whitenoise
Una vez que todas tus dependencias estén instaladas es importante crear el archivo requirements.txt
para que Heroku pueda instalar estas mismas dependencias:
(myvenv) $ pip freeze > requirements.txt
Hace falta instalar también psycopg2 para que Heroku pueda utilizar su propia base de datos postgreSQL, y hay dos maneras de instalar esto, puedes asegurarte de tener instalado postgreSQL de forma local y despues ejecutar:
(myvenv) $ pip install django-toolkit psycopg2
o si no quieres instalar postgreSQL de forma local, basta con que abras el archivo requirements.txt
y agregues hasta el final psycopg2==2.6.2
Paso #2 — El Procfile
Heroku necesita saber que tipo de app es la nuestra y cómo ejecutarla para eso creamos el archivo Procfile
si, así sin extención y con mayúscula dentro de nuestro proyecto y agregamos al archivo la siguiente linea:
web: gunicorn miSitio.wsgi
obviamente miSitio es el nombre de tu proyecto (así como aparece en tu archivo wsgi)
Como puedes vez también necesitamos tener en nuestro archivo requirements.txt gunicorn
si instalaste django-toolkit
ya deberías tenerlo instalado en tu entorno virtual, pero si no basta con ejecutar lo siguiente:
(myvenv) $ pip install gunicorn
y no olvidemos nuevamente actualizar requirements.txt así:
(myvenv) $ pip freeze > requirements.txt
Paso #3 — El archivo runtime.txt
Ahora necesitamos decirle a Heroku que versión de python estamos usando.
Vamos a crear otro archivo dentro de nuestro proyecto llamado runtime.txt
y le agregamos la siguiente linea:
python-3.5.2
si estás trabajando con python 2 puedes especificar python-2.7.13
en vez del anterior
Paso #4 — Modificamos nuestro settings.py
hay que cambiar un par de cosas para que nuestro proyecto funcione correctamente en Heroku.
Primero agregaremos estas lineas hasta el final de nuestro archivo settings.py
:
# Update database configuration with $DATABASE_URL.
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
con esto Heroku podrá utilizar su propia base de datos postgreSQL, al mismo tiempo que optimiza la conexión
Después agregamos estas lineas justo debajo:
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
Esto le permitirá a Heroku encontrar nuestros archivos estáticos y mostrar nuestra app correctamente
Y por último agregamos esta linea debajo de lo anterior:
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Paso #5 — Modificamos nuestro wsgi.py
Agregamos 2 lineas al final del archivo:
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)
el archivo queda de esta forma:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "miSitio.settings")
application = get_wsgi_application()
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)
Recuerda, miSitio es el nombre de tu proyecto
Paso #6 — Creamos el proyecto en Heroku
Para esto necesitamos instalar el Heroku CLI
con el siguiente comando si estás en mac:
brew install heroku
Si estas en Windows o Linux, aquí estan las ligas para descargar el instalador
Una vez instalado el CLI de Heroku ejecutamos el comando:
(myvenv) $ heroku create
Si es la primera vez que usas Heroku deberás abrir sesión primero con el comando heroku login
Una vez que se haya creado un proyecto nuevo aparecerá el nombre en la consola junto con un link donde estará hospedada tu aplicación.
Paso #7 — Hacemos Push a Heroku
Estamos listos para subir nuestro proyecto a Heroku, para ello hacemos commit de todo lo que hasta ahora hemos trabajado:
(myvenv) $ git add -A
(myvenv) $ git commit -m "listos"
(myvenv) $ git push heroku master
Nota: si no haz inicializado git primero ejecuta git init
Super importante que te encuentres en tu Master Branch, pues no se puede subir a heroku de otras ramas además de la Master
Una vez que Heroku termine de configurar tu proyecto puedes abrirlo en el navegador con el comando:
(myvenv) $ heroku open
¡Felicidades lo haz logrado!
Resolución de errores comunes:
1.- Si aparece un error al ejecutar collect static
esto puede deberse a que no existe una carpeta static dentro del proyecto, asrgurate de crear una carpeta static y ponerle un archivo cualquiera dentro esto puede ser algo así: static/file.txt
extras
Si quieres agregar tu dominio personalizado a heroku puedes hacerlo con los siguientes comandos:
(myvenv) $ heroku domains:add www.example.com
(myvenv) $ heroku domains