Deploy de Django con Heroku

Que es heroku?

Es uno de los PaaS más utilizados en la actualidad en entornos empresariales para hacer el despliegue de aplicaciones. También te permite manejar el servido y sus configuraciones, escalamientos y la administración. Lo único que tienes que hacer es decirle la tecnología de backend y que base de datos utilizas.

Necesitamos unos pre requisitos para poder hacer el tutorial:

* Una cuenta en Heroku
* Python3.7
* PostgreSQL
* Git


Instalar Python3.7 

Lo primero instalaremos las dependencias para poder instalar python.

- sudo apt-get install build-essential
- sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Después de esto nos bajaremos con el wget python3.7.2 en la carpeta /usr/src. Y descomprimimos el paquete

- cd /usr/src
- sudo wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
- sudo tar xzf Python-3.7.2.tgz

Entramos a la carpeta y compilamos el código para instalar python.

- cd Python-3.7.2
- sudo ./configure --enable-optimizations
- sudo make altinstall

Si quieres comprobar que versión tienes puedes utiliza 

- Python3.7 -V


PostgreSQL

- sudo apt-get install postgresql
- which psql (Comprobar si esta instalado)
- sudo -u postgresql -i (Trabajar sobre un usuario postgre)
- psql (lanzar postgresql)


Git

- sudo apt-get install git-all

Vamos a configurar-lo

- git config --global user.name "Tu nombre"
- git config --global user.email tucorreo
- git config --list nos permitirá ver la configuración

Heroku

Lo primero que vamos a hacer es instalar snapd

- sudo apt-get install snapd

Seguidamente instalaremos heroku

- sudo snap install heroku --classic

y lanzamos heroku login --interactive para iniciar sesión, si no funciona tendremos que reiniciar el VPS lanzando el comando (- sudo init 6)

- heroku login --interactive 

Vamos a clonar nuestro git

- git clone tuproyectogit.git

cd tuproyecto/

Vamos a crear la aplicación de heroku y lo vamos a subir

- heroku create
- git push heroku master

En el requirements.txt añadiremos gunicorn

- echo gunicorn > requeriments.txt

En el settings.py cambiaermos el ALLOWED_HOSTS

ALLOWED_HOSTS=['tunombreheroku.herokuapp.com']

- sudo nano conduit/settings.py (Esta ruta es en mi caso)

Después de tener todo esto vamos a crear el fichero Procfile y Procfile.window.

- echo web: gunicorn conduit.wsgi --log-file - > Procfile
- echo web: python manage.py runserver > Procfile.windows

lo añadimos al repositorio

- git add .
- git commit -m "Commmit Procfile y Procfile.windows"
- git push heroku master

realizamos los dos siguientes comandos.

- heroku ps:scale web=0
- heroku ps:scale web=1

Si vamos a la dirección de heroku ya tendremos la aplicación funcionando
unombreheroku.herokuapp.com

En mi caso es esta


Información conseguida de: