Saltar a contenido

DEPLOY HEROKU - DJANGO

FAST MODE

0. Up repo to GH

Subimos nuestro resposotorio a GitHub InONELINE (IOL)

git add . && git commit -m "first commit" && git push -u origin master

1. AGREGANDO PIPs necesarios:

pip install gunicorn
pip install psycopg2-binary
pip install django-heroku

In one line (IOL):

pip install gunicorn && pip install psycopg2-binary && pip install django-heroku

Actualizamos dependencias y verifiquemos que por error no hayamos agregado otras cosas dependencias globales.

pip freeze > requirements.txt

ISSUE psycopg2

Solution:

sudo apt-get install --reinstall libpq-dev
Font: https://stackoverflow.com/questions/11618898/pg-config-executable-not-found?page=2&tab=Votes


2. TESTEANDO gunicorn

Gunicorn deberia funcionar sin errores apra nuestro deploy.

python3 manage.py runserver 0.0.0.0:8000

gunicorn APIRestDjango.wsgi

Si estamos conectados remotamente usaremos ngrok para verificar gunicorn.

ngrok http 8000
gunicorn APIRestDjango.wsgi

3. ADD Procfile

Creamos el Procfile en la raiz de nuestro proyecto que necesitamos para que heroku pueda servir nuestro proyecto usando unicorn server.

nano Procfile

y dentro metemos este codigo que ejecuta unicorn, donde vemos el nombre de nuestro proyecto seguido de .wsgi

web: gunicorn APIRestDjango.wsgi


4. Add Configs to Settings.py

import django_heroku

django_heroku.settings(locals())


5. Update requirements and REPO

Actualizamos las dependencias.

pip freeze > requirements.txt

Subimos los cambios.

git add .
git commit -m "UPDATE HK configs"
git push -u origin 

-- OIL

git add . && git commit -m "UPDATE HK configs" && git push -u origin


6. CREAR Y VINCULAR Heroku APP

1 Creamos una nueva app en heroku.

2 Vinculamos esa app a nuestro repositorio.

3 Habilitamos Automatic Deploys.

4 Desplegamos la rama donde está nuestro proyecto.

5 listo nuestro proyecto fue desplegado.


7. Migrando BD

Es necesario migrar nuestra base de datos y para heroku usaremos PostgreSQL.

1. Listamos las apps de nuestro heroku.

heroku apps
2. Nos enganchamos de es app
heroku git:remote -a myaplication

3. Nos conectamos a la consola de nuestra app.

heroku run bash

4. (En la ultima version heroku nos crea y conecta automaticamente a una base de datos PostgreSQL)

5 . Migramos nuestra base de datos

python3 manage.py migrate

6. Crea un super usuario para acceder al admin del sistema.

python3 manage.py createsuperuser

Nos preguntará, esto es para admitir contraseña no segura y nosotros le damos aque si "y"

Bypass password validation and create user anyway? [y/N]:

ISSUE DEPLOY HEROKU

Este error se da porque no activamos el free dynos y eso lo hacemos ingresando a Configure Dynos

y deberia ya de estar activo:

Listo eso seria todo para el deploy.


FONTS:

Video Principal




TUTORIAL EXTENDIDO

REQUERIMIENTOS:

  • Tambien el HEROKU CLI que nos ayudará mucho a poder observar nuestros log sobre errores y algunas configuraciones extra.
  • GitHub CLI que tambien nos ayudará gestionar nuestro repo desde consola.

VIRTUAL ENV

1 Creamos nuestro entorno virtual hubicandonos en la carpeta de nuestro proyecto.

virtualenv .

2. Activamos nuestro entorno.

source bin/activate

3. Instalamos nuestras dependencias mas importantes en este nuevo entorno que aun no tiene nada de las dependencias que necesita nuestro proyecto.

pip install django
pip install djangorestframework

4. Exportamos nuestro requirements.

pip freeze > requirements.txt

0. GitHub CLI

1 Configuramos nuestro repositorio y lo subiremos para tenerlo ya sincronizado y poder controlar nuestros cambios por si llegamos a fallar algo.

git init 

2. Cuando terminemos de crear nuestro repositorio al final nos pregunta si queremos o no vincular el repositiorio y le damos a enter.

gh repo create

3. Ahora vamos a subirlo.

git add .

git commit -m "first commit"
git push -u origin master

InONELINE (IOL)

git add . && git commit -m "first commit" && git push -u origin master

2. AGREGANDO PIPs necesarios:

pip install gunicorn
pip install psycopg2-binary
pip install django-heroku

In one line:

pip install gunicorn && pip install psycopg2-binary && pip install django-heroku

ISSUE con django-heroku

Solution:

sudo apt-get install --reinstall libpq-dev
Font: https://stackoverflow.com/questions/11618898/pg-config-executable-not-found?page=2&tab=Votes


3. TESTEANDO SERVIDORES

Es buena idea testear si nuestro proyecto está corriendo correctamente para ello debemos verificar en cada cambio su funcionamiento.

python3 manage.py runserver 0.0.0.0:8000
gunicorn APIRestDjango.wsgi

Si estamos conectados remotamente usaremos ngrok para verificar gunicorn.

ngrok http 8000
gunicorn APIRestDjango.wsgi

4. Procfile

Creamos el Procfile en la raiz de nuestro proyecto que necesitamos para que heroku pueda servir nuestro proyecto usando unicorn server.

nano Procfile

y dentro metemos este codigo que ejecuta unicorn, donde vemos el nombre de nuestro proyecto seguido de .wsgi

web: gunicorn APIRestDjango.wsgi


5. Add Configs to Settings.py

import django_heroku

django_heroku.settings(locals())


6. Update REPO

Actualizamos las dependencias.

pip freeze > requirements.txt

Subimos los cambios.

git add .
git commit -m "first commit"
git push -u origin master

7. CREAR Y VINCULAR Heroku APP

1 Creamos una nueva app en heroku.

2 Vinculamos esa app a nuestro repositorio.

3 Habilitamos Automatic Deploys.

4 Desplegamos la rama donde está nuestro proyecto.

5 listo nuestro proyecto fue desplegado.


8. Migrando BD

Es necesario migrar nuestra base de datos y para heroku usaremos PostgreSQL.

1. Listamos las apps de nuestro heroku.

heroku apps
2. Nos enganchamos de es app
heroku git:remote -a myaplication

3. Nos conectamos a la consola de nuestra app.

heroku run bash

4. (En la ultima version heroku nos crea y conecta automaticamente a una base de datos PostgreSQL)

5 . Migramos nuestra base de datos

python3 manage.py migrate

6. Crea un super usuario para acceder al admin del sistema.

python3 manage.py createsuperuser

Nos preguntará, esto es para admitir contraseña no segura y nosotros le damos aque si "y"

Bypass password validation and create user anyway? [y/N]:

ISSUE DEPLOY HEROKU

Este error se da porque no activamos el free dynos y eso lo hacemos ingresando a Configure Dynos

y deberia ya de estar activo:

Listo eso seria todo para el deploy.


FONTS:

Video Principal