0% encontró este documento útil (0 votos)
22 vistas20 páginas

Despliegue Con Flask (Python)

El documento detalla el procedimiento para desplegar una aplicación Flask utilizando Python, incluyendo la instalación de pipenv, la creación de un directorio para el proyecto y la configuración de permisos. Se explican los pasos para crear un entorno virtual, instalar dependencias, y configurar Gunicorn y Nginx para servir la aplicación. Finalmente, se instruye sobre cómo acceder a la aplicación a través de un navegador una vez completada la configuración.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas20 páginas

Despliegue Con Flask (Python)

El documento detalla el procedimiento para desplegar una aplicación Flask utilizando Python, incluyendo la instalación de pipenv, la creación de un directorio para el proyecto y la configuración de permisos. Se explican los pasos para crear un entorno virtual, instalar dependencias, y configurar Gunicorn y Nginx para servir la aplicación. Finalmente, se instruye sobre cómo acceder a la aplicación a través de un navegador una vez completada la configuración.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Practica Despliegue de una

Aplicación con Flask (Python)

Joan Augusto Paute Romero


Procedimiento completo para el despliegue
Primero instalamos el gestor de paquetes de Python pip→sudo apt update y sudo apt
install pipenv

Despues comprobamos que se ha instalado correctamente → pipenv –version

Despues de comprobar la versión crearemos un directorio que almacenará niuestro


proyecto —> sudo mkdir /var/www/nombreAplicacion

cuando lo creamos con sudo los permisos lo pertenecen al root

1
​ Hay que cambiarlo para que el dueño sea nuestro usuario (raul-debian en mi
caso) y pertenezca al grupo www-data, el usuario usado por defecto por el
servidor web para correr:
​ sudo chown -R $USER:www-data /var/www/mi_aplicacion
​ Establecemos los permisos adecuados a este directorio, para que pueda ser
leído por todo el mundo:
​ chmod -R 775 /var/www/mi_aplicacion

2

Ahora dentro de nuestro directorio debemos de crear un archivo oculto .env que
contendra variables necesarias → touch .env

3
De ahi editaremos el archivo y añadimos variables , indicando primero cuál es el
archivo .py(pyhton) de la aplicación y en nuestro será producción

4
Ahora despues de hacer esto iniciaremos nuestro entorno virtual , Pipenv cargará las
variables creadas antes en .env de forma automática → pipenv shell
Aviso debeis tener instalado el python antes (seguir aqui que es mas interesante
)

5
veremos que se nos inica el entorno virtual , porque aparece l nombre en el prompt del
shell

6
Usaremos pipenv para instalar las dependicas necesarias para nuestro proyecto:-->
pipenv install flask gunicorn

7
8
​ Vamos ahora a crear la aplicación Flask más simple posible, a modo de PoC
(proof of concept o prueba de concepto). El archivo que contendrá la aplicación
propiamente dicha será application.py y wsgi.py se encargará únicamente de
iniciarla y dejarla corriendo:
touch application.py wsgi.py

Y tras crear los archivos, los editamos para dejarlos así:IMPORTANTE

9
10
de esa manera hay que tenerlo

12.​ Corramos ahora nuestra aplicación a modo de comprobación con el servidor


web integrado de Flask. Si especificamos la dirección 0.0.0.0 lo que le estamos
diciendo al servidor es que escuche en todas sus interfaces, si las tuviera:
​ flask run ´-–host ‘0.0.0.0’

11
con esto podemos acceder a la aplicacion desplegada Ahora
podremos acceder a la aplicación
desde nuestro ordenador, nuestra máquina anfitrión, introduciendo en un navegador
web: http://IP-maq-virtual:5000

Ahora vamos a realizar una comprobación si , siguiendo con todos los pasos que hemos ido
haciendo ha funcionado correctamente podemos utilizar el siguiente comando para probar que la
aplicacion usando Gunicorn accediendo con nuestro navegador de la misma manera que antes

​ gunicorn --workers 4 --bind 0.0.0.0:5000 wsgi:app

​ Teoria
​ --workers N establece el número de workers o hilos que queremos utilizar, como ocurría con
Node Express. Dependerá del número de cores que le hayamos dado a la CPU de nuestra
máquina virtual.

​ --bind 0.0.0.0:5000 hace que el servidor escuche peticiones por todas sus interfaces de red
y en el puerto 5000

​ wsgi:app es el nombre del archivo con extensión .py y app es la instancia de la aplicación
Flask dentro del archivo.

12
13
Por si queremos en un futuro configurar un servicio del sistema debemos saber cual es el path o
ruta desde la que se ejecuta gunicorn seria asi → which gunicorn

vale ahora iremos a hacer un archivo en nuestro sistema para que gnix lo reconozca y aso
podremos usar una forma mas de desplieugue

vamos a crear un archivo en esta direccion

ojo la teoria de las cosas a utilizar es esta


Donde:

​ User: Establece el usuario que tiene permisos sobre el directorio del proyecto (el que
pusistéis en el paso 5)
​ Group: Establece el grupo que tiene permisos sobre el directorio del proyecto (el que
pusistéis en el paso 5)
​ Environment: Establece el directorio bin (donde se guardan los binarios ejecutables)
dentro del entorno virtual (lo vistéis en el paso 14)

14
​ WorkingDirectory: Establece el directorio base donde reside nuestro proyecto
​ ExecStart: Establece el path donde se encuentra el ejecutable de gunicorn dentro del
entorno virtual, así como las opciones y comandos con los que se iniciará

Warning​ Debéis cambiar los valores para que coincidan con los de vuestro caso
particular.

que es la misma que está

15
​ /etc/nginx/sites-available/nombre_aplicacion

​ ahora pasaremos a configurar nuestr NGINX para que funciones , debemos crear en esta
direccion /etc/nginx/sites-available/nombre_aplicacion un fichero con el nombre de nuestra
aplicacion y configurarlo con lo siguiente

server {
listen 80;
server_name mi_aplicacion www.mi_aplicacion; #

access_log /var/log/nginx/mi_aplicacion.access.log; #

error_log /var/log/nginx/mi_aplicacion.error.log;
location / {
include proxy_params;
proxy_pass http://unix:/var/www/nombre_aplicacion/nombre_aplicacion.sock; # }
}

​ Recordemos que ahora debemos crear un link simbólico del archivo de sitios
webs disponibles al de sitios web activos:
sudo ln -s /etc/nginx/sites-available/nombre_aplicacion /etc/nginx/sites-enabled/
Y nos aseguramos de que se ha creado dicho link simbólico:
​ ls -l /etc/nginx/sites-enabled/ | grep nombre_aplicacion

16

​ Nos aseguramos de que la configuración de Nginx no contiene errores,
reiniciamos Nginx y comprobamos que se estado es activo:
8.​ nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx

17
9.​ Ya no podremos acceder por IP a nuestra aplicación ya que ahora está siendo servida por
Gunicorn y Nginx, necesitamos acceder por su server_name. Puesto que aún no hemos tratado
con el DNS, vamos a editar el archivo /etc/hosts de nuestra máquina anfitriona para que asocie la
IP de la máquina virtual, a nuestro server_name.
Este archivo, en Linux, está en: /etc/hosts

Y en Windows: C:\Windows\System32\drivers\etc\hosts
Y deberemos añadirle la línea:

192.168.X.X myproject www.myproject

donde debéis sustituir la IP por la que tenga vuestra máquina virtual.

10.​El último paso es comprobar que todo el desplieuge se ha realizado de forma correcta y está
funcionando, para ello accedemos desde nuestra máquina anfitrión a:

http://nombre_aplicacion

O:​ ​ http://www.nombre_aplicacion

18
Y debería mostraros la misma página que en el paso 14:

19

También podría gustarte