Cómo usar Nginx con Flask.

Cómo usar Nginx con Flask.
Python es un lenguaje de programación excelente, fácil de aprender y todopoderoso, y con marcos como Django y Flask, podemos usarlo para crear aplicaciones web completas. Una vez que creamos una aplicación web utilizando bibliotecas y marcos como Flask, necesitamos alojarla en un servidor y exponerla al público. Este tutorial analiza cómo alojar su aplicación web en un servidor que ejecuta NGINX usando Gunicorn. Antes de comenzar con Flask y Gunicorn, asegúrese de cumplir con los siguientes requisitos:
  • Un servidor con acceso SSH
  • Servidor web nginx que se ejecuta en el servidor (instalación cubierta)
  • Pitón
  • Eres un usuario de sudo.

Configuración del servidor

Comiencemos ahora configurar el entorno del servidor que utilizaremos para alojar nuestro servidor. Este tutorial usa el servidor ubuntu. Comience actualizando los repositorios e instalando Python3 y Pip.

actualización de sudo apt-get
sudo apt -get actualización -y
sudo apt-get install python3 python3-pip -y

A continuación, necesitamos crear un directorio para almacenar el proyecto.

sudo mkdir/var/www/aplicación
CD/VAR/WWW/Aplicación

Cambiar la propiedad y los permisos del directorio:

sudo chown -r www-data: www-data/var/www/aplicación/

A continuación, instale los paquetes con APT (Flask y Gunicorn)

sudo apt-get install python3-flask python3-gunicorn

Procedamos ahora a inicializar una aplicación Flask. Comience por crear el principal.Py-Holds la aplicación y WSGI.py, que se ejecutará la aplicación.

sudo toque principal.py wsgi.py

Editar el principal.PY FILE Y CONFIGURAR su aplicación Flask y todas las rutas. Dado que este tutorial no es una guía de frasco, configuraremos una ruta básica y un mensaje de Hello World.

de Flask Import Flask
App = Flask (__ Nombre__)
@App.ruta("/")
Def Home ():
devolver "

Nginx y Gunicorn

"

Editar el wsgi.archivo py y agregar el código para importar la aplicación y ejecutar como:

de la aplicación de importación principal
Si __name__ == "__main__":
aplicación.run (debug = true)

Finalmente, pruebe si está en funcionamiento llamando a Flask como:

$ Flask Run
* Medio ambiente: producción
Advertencia: este es un servidor de desarrollo. No lo use en una implementación de producción.
Utilice un servidor WSGI de producción en su lugar.
* Modo de depuración: APAGADO
* Ejecutando en http: // 127.0.0.1: 5000/ (presione Ctrl+C para dejar de fumar)

Intente acceder a la aplicación en http: // localhost: 5000.

Configuración de Gunicorn

Una vez que nuestra aplicación se ejecuta correctamente, podemos usar Gunicorn para probar la aplicación utilizando los comandos:

$ sudo gunicorn -trabajadores 5 wsgi: aplicación
[2021-03-19 09:19:34 +0000] [14047] [INFO] Inicio de Gunicorn 20.0.4
[2021-03-19 09:19:34 +0000] [14047] [Info] Escuchando en: http: // 127.0.0.1: 8000 (14047)
[2021-03-19 09:19:34 +0000] [14047] [Info] Uso del trabajador: Sync
[2021-03-19 09:19:34 +0000] [14049] [Info] Trabajador de arranque con PID: 14049
[2021-03-19 09:19:34 +0000] [14050] [Info] Trabajador de arranque con PID: 14050
[2021-03-19 09:19:34 +0000] [14051] [Info] Trabajador de arranque con PID: 14051
[2021-03-19 09:19:34 +0000] [14052] [Info] Trabajador de arranque con PID: 14052
[2021-03-19 09:19:35 +0000] [14053] [Info] Trabajador de arranque con PID: 14053

Los comandos anteriores ejecutan la aplicación Flask usando Gunicorn utilizando el número especificado de trabajadores. Luego llamamos al archivo wsgi: aplicación, que es el archivo e instancia de la aplicación para ejecutar.

Una vez que tenga la aplicación ejecutándose con Gunicorn, presione Ctrl + C para detener el servidor y configurar Nginx.

Use los comandos a continuación para instalar y ejecutar Nginx.

sudo apt -get install nginx -y
sudo systemctl iniciar nginx
sudo systemCTL habilitar nginx

El siguiente paso es editar la configuración de Nginx en el directorio habilitado para sitios y agregar el bloque del servidor. Considere la siguiente configuración. Cambie la aplicación al nombre de su proyecto.

sudo nano/etc/nginx/sites disponible/aplicación.confusión
servidor
Escucha 80;
aplicación server_name;
access_log/var/log/nginx/aplicación.acceso.registro;
ERROR_LOG/VAR/LOG/NGINX/APLICACIÓN.error.registro;
ubicación /
incluir proxy_params;
proxy_pass http: // unix:/var/www/aplicación/aplicación.calcetín;

Proceda a crear un enlace al directorio habilitado para el sitio para habilitar el sitio web.

sudo ln -s/etc/nginx/sites disponible/aplicación.conf/etc/nginx/sites-habilitado/

Ahora reinicie el servicio NGINX como:

sudo systemctl reiniciar nginx

A continuación, necesitamos crear un archivo de la unidad Systemd para servir a la aplicación.

sudo nano/etc/systemd/sistema/aplicación.servicio
[Unidad]
Descripción = aplicación.Servicio: una solicitud de frascos con Gunicorn.
Después = red.objetivo
[Servicio]
Usuario = Data www
Grupo = Data www
WorkingDirectory =/var/www/aplicación/
Execstart =/usr/bin/gunicorn --workers 3 -unix:/var/www/aplicación.Sock WSGI: aplicación
[Instalar]
Wantedby = Multi-user.objetivo

Finalmente, guarde el archivo de la unidad, luego habilite y vuelva a cargar el demonio.

Aplicación de reinicio de SUDO SystemCTL.servicio
SUDO SystemCtl-Daemon-Re-Re-Reload

Ahora puede acceder a la aplicación utilizando la dirección IP o la dirección especificada en el archivo de configuración de Nginx. Es posible que deba agregarlo al archivo del host.

curl http: // aplicación
Http/1.1 200 OK
Servidor: werkzeug/0.dieciséis.1 Python/3.8.5)
Fecha: viernes, 19 de marzo de 2021 10:00:39 GMT
Tipo de contenido: texto/html
Content-longitud: 25
Último modificado: viernes, 19 de marzo de 2021 09:22:47 GMT

Conclusión

Este tutorial superó cómo configurar una aplicación Python Flask y servirla sobre Nginx usando Gunicorn. Considere la documentación individual para obtener más información sobre los servicios discutidos en este tutorial.