domingo, 18 de abril de 2021

Flask en Heroku usando GitHub

Flask es un framework para crear páginas web usando Python. Otro framework similar es Django, pero hemos elegido Flask por su sencillez a la hora de desplegar nuestra primera página web con Python.

Disponemos de varios recursos para aprender Flask.

Para realizar el despliegue obtendremos una cuenta de Heroku.

Comencemos ...

Paso 0

Estamos en Linux, en un Ubuntu 20.04.
Comprobemoslo.
lsb_release -a


Paso 1

Actualizamos el sistema.

sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y


Paso 2

Comprobar que está instalado Python 3 o en caso contrario instalarlo.


python --version

Paso 3

Instalar el entorno virtual (virtual environment). Si usamos Python 3 viene con venv que es la nueva forma de instalar el entorno virtual. Si usas Python 2 debes usar el sistema antiguo con virtualenv. En nuestro caso como usamos Python3, usaremos venv que es más sencillo de instalar, demás es el que se recomienda en la instalación de Flask (Instalación 1.1.x).

Actualmente no es necesario instalar virtualenv ya que existe

 sudo apt install python3-venv  
 python3 -m venv venv  

La segunda venv es el nombre del entorno virtual, podemos asignar el nombre que queramos.

Paso 4

Activación del entorno virtual.

El entorno virtual se activa así:

. venv/bin/activate

Dentro del entorno virtual no es necesario poner python3, si ponemos simplemente python ya se sabe que es la versión 3, tal y como se ve en la imagen anterior.

Paso 5

Creación de un "Hola mundo". Se puede crear con tu editor de código favorito y se ha de llamar app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

Paso 6

Lanzar el servidor de Flask.

python app.py


Deja la ventana de esta terminal abierta corriendo el servidor Flask.

Paso 7

Ver la página web.

Abre una pestaña de tu navegador y teclea la url donde podrás ver la página web ejecutándose.
http://127.0.0.1:5000  
La página que solicitamos es la de LocalHost con el puerto 5000.






Paso 8

Despliegue en Heroku.

Sacamos una cuenta gratuita de Heroku.

Elegimos crear un nuevo proyecto.




Elegimos un nombre de proyecto que esté disponible.


Cuando tengamos nuestra aplicación desplegada la podremos ver en https://holamundi.herokuapp.com


Paso 9

Crear un repositorio en GitHub denominado flaskholamundi o con el nombre que quieras.
De momento no creamos ni el read.me, ni la licencia, ya que lo queremos vacío.



Paso 10

Copiamos la dirección del repositorio para luego poder clonarlo.



Paso 11

Nos vamos en la terminal, a nuestro directorio, donde queramos tener clonados los archivos del repositorio y tecleamos lo siguiente.

Ojo: sustituye la URL que aparece por la de tu repositorio.

git clone https://github.com/pythonfinanciero/flaskholamundi.git


Si aparece, como en la imagen anterior, una advertencia indicando que el repositorio está vacío es normal, ya que efectivamente, de momento está vacío porque no hemos creado ni siquiera el archivo read.me.

Paso 12

Vamos a nuestro editor de código, en nuestro caso utilizaremos Visual Studio Code (VSC). Podemos abrir el VSCode tecleando en la terminal:
 
code .


Paso 13

De momento no hay archivos en nuestro repositorio. Crearemos el archivo app.py que es similar al archivo que se creo anteriormente con el editor nano.



#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
  return 'Hello there from Flask!'
if __name__ == '__main__':
  port = int(os.environ.get("PORT", 5000))
  app.run(host='0.0.0.0', debug=True, port=port)

Paso 14

Ahora tenemos que subir el archivo a GitHub.

git add --all
git commit -m "Primera version funcional"
git push
Si es la primera vez que hacemos un push a GitHub nos pedirá el usuario y la contraseña.



Paso 15

Comprueba en GitHub que el archivo se ha subido bien.


Paso 16

Conectamos Heroku a GitHub.


Creamos una pipeline llamada holamundigit.





Paso 17

Automatizar el despliegue. En algún momento también hemos pedido que el despliegue se haga para producción.






Paso 18

Añadir el Buildpack.

En Heroku, en la pestaña Settings de nuestro proyecto, encontraremos abajo Buildpacks





Paso 19

Instalamos heroku en Ubuntu.


En nuestra terminal de Linux instalamos heroku.

sudo snap install heroku --classic

Paso 20

Nos logeamos en heroku.

heroku login
Esto abrirá una pestaña de nuestro navegador y nos tendremos que logear en heroku con usuario y contraseña.

Otra forma de hacerlo, únicamente desde la terminal es teclerar:
heroku login -i

Paso 21

Flask lleva incluido un servidor HTTP pero muy simple que permite atender unicamente una petición cada vez. Heroku precisa para funcionar de un servidor como gunicorn que permite atender múltiples peticiones HTTP. Necesitamos instalar gunicorn ya que en caso contrario Heroku no funcionará.

pip install gunicorn


Paso 22

Cree el archivo Procfile:
  • es un archivo sin extensión
  • la primera letra (P) es mayúscula
  • es una archivo de texto con la siguiente línea

web: gunicorn app:app

Nuestra aplicación se llama app.py pero si se llamara main.py la línea anteriror debería ser:

web: gunicorn main:app

Paso 23

El archivo requirements.txt indica las librerías que son necesarias cargar incluyendo sus versiones.

En nuestro caso cargaremos la siguientes.

Flask==1.1.1
gunicorn==19.9.0

Paso 24

Comprobar que la página esta funcionando correctamente y se encuentra desplegada.

Estando en la página de Heroku, en deploy, pulsamos sobre el botón denominado Open app que se encuentra en la equina superior derecha.



Paso 25

Si todo ha ido bien veremos desplegada nustra página en





No hay comentarios:

Publicar un comentario