GNU/Linux >> Tutoriales Linux >  >> Panels >> Panels

Cómo implementar la aplicación Flask con Nginx y Gunicorn en Ubuntu 20.04

Flask es un marco web pequeño, liviano y microescrito en Python. Le permite desarrollar aplicaciones web fácilmente sin herramientas ni bibliotecas. Esta aplicación web puede ser un blog, una página wiki, páginas web, una aplicación de calendario basada en la web o un sitio web comercial. Es simple, fácil de usar, fácil de aprender y apto para principiantes porque no requiere ninguna dependencia.

En este tutorial, le mostraremos cómo implementar la aplicación Flask con Gunicorn y Nginx en Ubuntu 20.04.

Requisitos

  • Un VPS Ubuntu 20.04 con acceso raíz habilitado, o un usuario con privilegios sudo.

Iniciar sesión y actualizar paquetes

Primero, necesitaremos iniciar sesión en nuestro servidor usando SSH. Puede hacerlo ingresando este comando:

ssh root@IP_Address -p Port_Number

Recuerde reemplazar root con su nombre de usuario si no está utilizando el usuario raíz. Cambiar IP_Address y Port_Number según la dirección IP de su servidor y el número de puerto SSH.

Una vez que haya iniciado sesión, debe actualizar todos sus paquetes a sus últimas versiones disponibles.

apt-obtener actualización -y
apt-get upgrade -y

Una vez que todos los paquetes estén actualizados, reinicie su servidor para aplicar los cambios de configuración.

Instalar dependencias requeridas

Flask es una aplicación basada en Python. Entonces Python y otras dependencias requeridas deben estar instaladas en su servidor. Si no está instalado, puede instalarlos todos con el siguiente comando:

apt-get install python3 python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools -y

Una vez que todas las dependencias estén instaladas, instale el paquete de entorno virtual de Python usando el siguiente comando:

apt-get install python3-venv -y

Una vez instalado, puede continuar con el siguiente paso.

Instalar servidor web Nginx

En este tutorial, usaremos Nginx como proxy inverso para la aplicación Flask. Por lo tanto, deberá instalar el paquete del servidor web Nginx en su servidor. Puedes instalarlo usando el siguiente comando:

apt-get install nginx -y

Una vez que Nginx esté instalado, inicie y habilite el servicio Nginx con el siguiente comando:

systemctl start nginx
systemctl enable nginx

Crear un entorno virtual para la aplicación Flask

A continuación, deberá crear un entorno virtual para la aplicación Flask.

Primero, cree un directorio de proyecto con el siguiente comando:

mkdir ~/project

A continuación, cambie el directorio a su proyecto y cree un entorno virtual de Python con el siguiente comando:

cd ~/project
python3 -m venv venv

A continuación, active su entorno con el siguiente comando:

source venv/bin/activate

A continuación, instale Gunicorn, Flask y otros componentes con el siguiente comando:

pip install wheel
pip install gunicorn flask

Una vez que haya terminado, puede continuar con el siguiente paso.

Crear una aplicación Flask

A continuación, deberá crear una aplicación Flask de muestra para su proyecto. Ejecute el siguiente comando para crearlo dentro del directorio de su proyecto:

nano ~/project/flaskapp.py

Agrega los siguientes códigos:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Welcome to Flask Application!"
if __name__ == "__main__":
    app.run(host='0.0.0.0')

Guarde y cierre el archivo, luego verifique su aplicación con el siguiente comando:

cd ~/project/
python3 flaskapp.py

Si todo está bien, debería obtener el siguiente resultado:

 * Serving Flask app 'flaskapp' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://69.28.84.227:5000/ (Press CTRL+C to quit)

Presione CTRL+C para cerrar la aplicación.

Crear un punto de entrada WSGI para Gunicorn

A continuación, deberá crear un punto de entrada WSGI para servir su aplicación a través de Gunicorn.

Ejecute el siguiente comando para crearlo:

nano ~/project/wsgi.py

Agregue las siguientes líneas:

from flaskapp import app
if __name__ == "__main__":
    app.run()

Guarde y cierre el archivo, luego verifique si Gunicorn puede servir la aplicación correctamente usando el siguiente comando:

cd ~/project/
gunicorn --bind 0.0.0.0:5000 wsgi:app

Si todo está bien, debería obtener el siguiente resultado:

[2021-12-23 10:37:15 +0000] [9352] [INFO] Starting gunicorn 20.1.0
[2021-12-23 10:37:15 +0000] [9352] [INFO] Listening at: http://0.0.0.0:5000 (9352)
[2021-12-23 10:37:15 +0000] [9352] [INFO] Using worker: sync
[2021-12-23 10:37:15 +0000] [9354] [INFO] Booting worker with pid: 9354

Presione CTRL+C para detener la aplicación. A continuación, desactívelo desde el entorno virtual de Python con el siguiente comando:

deactivate

Crear un archivo de servicio Systemd para la aplicación Flask

A continuación, deberá crear un archivo de unidad systemd para la aplicación Flask. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/flask.service

Agregue las siguientes líneas:

[Unit]
Description=Gunicorn instance to serve Flask
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/project
Environment="PATH=/root/project/venv/bin"
ExecStart=/root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo, luego establezca la propiedad y el permiso apropiados para el proyecto del matraz:

chown -R root:www-data /root/project
chmod -R 775 /root/project

A continuación, vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio de matraz y habilítelo para que se inicie al reiniciar el sistema:

systemctl start flask
systemctl enable flask

A continuación, verifique el estado del matraz con el siguiente comando:

systemctl status flask

Salida:

● flask.service - Gunicorn instance to serve Flask
     Loaded: loaded (/etc/systemd/system/flask.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-12-23 10:38:26 UTC; 8s ago
   Main PID: 9376 (gunicorn)
      Tasks: 2 (limit: 2353)
     Memory: 27.8M
     CGroup: /system.slice/flask.service
             ├─9376 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
             └─9393 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app

Dec 23 10:38:26 ubuntu2004 systemd[1]: Started Gunicorn instance to serve Flask.
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Starting gunicorn 20.1.0
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Listening at: http://0.0.0.0:5000 (9376)
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Using worker: sync
Dec 23 10:38:26 ubuntu2004 gunicorn[9393]: [2021-12-23 10:38:26 +0000] [9393] [INFO] Booting worker with pid: 9393

Configurar Nginx como proxy inverso para la aplicación Flask

A continuación, deberá configurar Nginx como un proxy inverso para servir la aplicación Flask a través del puerto 80. Para hacerlo, cree un archivo de configuración de host virtual de Nginx:

nano /etc/nginx/conf.d/flask.conf

Agregue las siguientes líneas:

server {
    listen 80;
    server_name flask.example.com;
    location / {
        include proxy_params;
        proxy_pass  http://127.0.0.1:5000;
    }
}

Guarde y cierre el archivo, luego verifique el Nginx para cualquier error de sintaxis:

nginx -t

Debería ver el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Finalmente, reinicie el servicio Nginx para aplicar los cambios:

systemctl restart nginx

Acceder a la aplicación Flask

En este punto, su aplicación Flask está instalada, configurada y alojada con un proxy Nginx. Ahora puede acceder a él usando la URL http://flask.example.com . Debería ver la siguiente página:

¡Felicidades! ha implementado con éxito la aplicación Flask con Gunicorn y Nginx en el servidor Ubuntu 20.04.

Sin embargo, si usted es uno de nuestros clientes de Hosting de Ubuntu Administrado, o si usa uno de nuestros planes de Hosting de VPS Administrado, no tiene que instalar la aplicación Flask en su VPS de Ubuntu 20.04; simplemente pregúntele a nuestros administradores, siéntese y relax. Nuestros administradores instalarán la aplicación Flask en Ubuntu 20.04 (o cualquier otro sistema operativo que tenga con nosotros) inmediatamente.

PD. Si te ha gustado este post sobre cómo instalar la aplicación Flask en un VPS con Ubuntu 20.04, compártelo con tus amigos en las redes sociales usando los botones de abajo, o simplemente deja un comentario en la sección de comentarios. Gracias.


Panels
  1. Cómo implementar aplicaciones Node.js con pm2 y Nginx en Ubuntu

  2. Cómo instalar Nginx con Google PageSpeed ​​en Ubuntu 20.04

  3. Cómo instalar Nginx con PHP5 y MySQL en Ubuntu 11.10

  4. Cómo instalar PHP 7.4 con Nginx en Ubuntu 20.04

  5. Cómo instalar Node.js con NVM y Nginx en Ubuntu 22.04

Cómo instalar MediaWiki con Nginx y Lets Encrypt SSL en Ubuntu 20.04

Cómo implementar Rocket Chat con Nginx en Ubuntu 18.04

Cómo instalar Bludit CMS con NGINX en Ubuntu 20.04

Cómo instalar Talkyard Forum con Nginx en Ubuntu 18.04

Cómo implementar una aplicación PHP con Nginx y MySQL usando Docker y Docker Compose

¿Cómo implementar la aplicación Laravel con Nginx en Ubuntu?