Desplegament d'Aplicacions (Heroku)

Desplegament d'Aplicacions en Heroku

 

 

A l'entrada de hui anem a seguir amb el desplegament d'aplicacions. Aquesta vegada anem a desplegar el backend de l'activitat anterior sobre una plataforma anomenada Heroku

Que és Heroku?

Heroku és un dels PAAS més utilitzats en l'actualitat en entorns empresarials pel seu fort enfocament en resoldre el desplegament d'una aplicació. A més et permet gestionar els servidors i les seves configuracions, escalament i l'administració. A Heroku només li dius quin llenguatge de backend estàs utilitzant o quina base de dades vas a utilitzar i et preocupes únicament pel desenvolupament de la teva aplicació.


Prerequisists

Una vegada entrem a la pàgina web i ens registrem ens sortirà una vista similar a aquest on podrem començar a desplegar la nostra aplicació. Al meu cas he escollit Python.






Una vegada fem clic en Python ens portarà al passos per realitzar el desplegament.

Tal i com indica la mateixa pàgina hem de tindre:
  • Un compter de Heroku
  • Python3.7
  • PostgresQL

Instal·lar Python3.7


Per instal·lar Python3.7 hi ha una mica de miga respecte les altres versions però el tutorial més fiable que he trobat és aquest.

Primerament executem les comandes: 
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
que, bàsicament són els paquets que necessitarem per l'instal·lació.

Després ens baixarem la versió 7.2 utilitzant la comanda wget. Però, primerament s'hem de situar al directori /usr/src:
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz


I descomprimim el paquet amb: sudo tar xzf Python-3.7.2.tgz

Després ens queda compilar el codi per acabar d'instal·lar Python3.7.2.
cd Python-3.7.2 
sudo ./configure --enable-optimizations

sudo make altinstall

I, per comprovar que tenim la versió comentada anteriorment instal·lada executem la comanda python3.7 -V.



Instal·lar PostresQL

 

PostgreSQL és  un sistema de gestió de bases de dades relacional orientat a objectes i de codi obert, sota la llicència PostgreSQL, similar a la BSD o la MIT.

Com molts altres projectes de codi obert, el desenvolupament de PostgreSQL no és manejat per una empresa o persona, sinó que és dirigit per una comunitat de desenvolupadors que treballen de forma desinteressada, altruista, lliure o recolzats per organitzacions comercials.

Per instal·lar-lo he utilitzat les següents comandes:

sudo apt-get install postgresql
which psql
(per comprovar que s'ha instal·lat correctament)
sudo -u postresql -i (treballar sobre l'usuari postgres)
psql (llançar postgresql)




Una vegada instal·lem aquest requeriments i accedim al següent pas ens demanarà, primerament, que tingam instal·lat i configurat git.


Instal·lar i configurar Git

Aquest pas és simple. Per instal·lar-lo utilitzarem la comanda:  
sudo apt install git-all

I per configurar-lo:
git config --global user.name "El nom que vullgau"
git config --global user.email el@vostre.correu
git config  --list ens permetrà veure la configuració que hem ficat. 




I, a priori, ja tindriem tots els prerequisits necessaris.


Instal·lar i configurar Heroku

Ara ha arribat l'hora de començar a 'tocar' Heroku. Per instal·lar-lo al nostre VPS utilitzarem la comanda: sudo snap install heroku --classic

*Si no tenim snap instal·lat prèviament executa: sudo apt-get install snapd




I, a continuació llançarem sobre la consola: heroku login per iniciar sessió.
Les credencials han de ser les mateixes que l'usuari que debem tindre creat en la pàgina de Heroku

*Si no funcionara la comanda, com m'ha passat a mi, reinicieu l'VPS amb la comanda sudo init 6 o des del 'Area de cliente' d'OVH.

 ** He utilitzat el --interactive a la comanda per introduir les dades manualment.
Una vegada iniciada la sessió prepararem l'aplicació.

Primer desplegarem una aplicació utilitzant el repositori de Heroku i, després, intentarem fer-ho sobre un nostre.

Preparar l'aplicació

Per preparar l'aplicació ens toca baixar el repositori de Git (si no el teniu pujat, pujeu-lo) o també, per començar, podem utilitzar el que ve al tutorial.

Per tant: git clone https://github.com/heroku/python-getting-started.git
I ens situem sobre el directori del projecte amb la comanda: cd python-getting-started


Crear aplicació Heroku

Per crear l'aplicació utilitzarem la comanda: heroku create
I despleguem el codi amb: git push heroku master




*Potser t'isca un errada a l'hora d'executar la comanda git push heroku master. Mira a la consola per si et surt que executes aquesta comanda:
heroku config:set DISABLE_COLLECTSTATIC=1, i si et surt eixe missatge fes-ho.

**Cal recordar que cada vegada que modifiquem la nostra aplicació hem d'executar git add, git commit i git push checkout master perquè s'actualitzen els canvis.

Com podem veure ens ha creat una aplicació en Heroku al fer la primera comanda anomenat warm-hamlet-34713, i baix ens surten unes URLs les quals necessitarem per accedir a l'aplicació des del navegador Web.

Amb git push heroku master ens instal·larà tot allo que necessite. Per eixe motiu no he executat la comanda pip install -r requeriments.txt per instal·lar les dependències necessaries.
Una vegada està l'aplciació desplegada podem comprovar que la nostra instància està en funcionament amb la comanda: heroku ps:scale web=1
 
Com podem veure a la captura, també executem la comanda heroku open la quals ens deuria obrir l'aplicació sobre el navegador. El problema és que al no tenir ni interificie gràfica ni cap navegador instal·lat ens surte error.

Per tant, per comprovar-ho podem accedir des del navegador del nostre equip amb l'url que ens proporciona a la penúltima línia. Aquesta.
I, si ha anat correctament, obtindrem una vista com aquesta:



I, així seria com desplegariem sobre el repositori de prova que ens dona Heroku. Ara anem a recrear el mateix sobre un projecte nostre.

Hem de fer exactament el mateix que als passos : 'Preparar l'aplicació' i 'Crear aplicació Heroku' pero a l'hora de fer el git clone hem d'introduir la direcció d'un projecte nostre.

*Hem de procurar que el projecte siga nostre o nosaltres tingam permisos ja que sinós a l'hora d'executar la comanda git push heroku master no ens deixarà.

Actualment a mi em dona error però com podem comprovar a les següents captures si que està desplegat a Heroku però a l'hora d'accedir des del navegador ens surt un error.










Els canvis que he realitzat per solucionar l'error han sigut:

Crear els arxius Procfile i Procfile.window.

Les aplicacions Heroku inclouen un Procfile que especifica les comandes que l'aplicació executa a l'inici. Podeu utilitzar un fitxer Procfile per declarar una varietat de tipus de processos, incloent:
  •     El servidor web de la vostra aplicació
  •     Múltiples tipus de processos de treballadors
  •     Un procés singleton, com ara un rellotge
  •     Tasques per executar abans d'implementar una nova versió



Afegir el paquet gunicorn al nostre requeriments.txt per a que s'instal·le quan fem el git push heroku master.

 


De l'arxiu settings.py canviar l'ALLOWED_HOSTS i ficar el link que em proveeix heroku.

De forma que quedaria així:  
ALLOWED_HOSTS = ['nameless-headland-42525.herokuapp.com']

**Per assegurar-me he executat les següents comandes per reiniciar:
heroku ps:scale web=0
heroku ps:scale web=1

Llavors, quan al navegador fiquem https://nameless-headland-42525.herokuapp.com/api/ ens apareixerà la següent finestra.

Com podem verue és la mateixa que ens apareix a l'anterior blog, la qual cosa significa que ha funcionat.




Obviament és poden fer més coses com canviar la base de dades a PostgreSQL, ja que Heroku ens preoveeix el servei gratuïtament, crear un superusuari per crear dades des de la Consola d'Administració, enjuntar aquest servidor a un Client... Però en aquest tutorial, m'he centrat en fer-lo funcionar ja que, a simple vista pot pareixer senzill, però m'ha portat bastants problemes inesperats.

Espere que us haja servit per desplegar el vostre servidor Django a Heroku i si tenireu qualsevol dubte comenteu a aquesta entrada. Gràcies.

Comentarios

Publicar un comentario

Entradas populares de este blog

Benvingut al meu Blogger

Treballant amb git - Repositori Remot