Implemente un sitio web de Flask en Nginx con uWSGI

Una vez que haya creado una aplicación Flask, encontrará que el servidor web incluido es el más adecuado para el desarrollo. En esta guía, aprenderá a alojar su aplicación Flask en una instancia de servidor en la nube de Debian 10 con un servidor web Nginx, Certbot para SSL y un servidor de aplicaciones uWSGI.

requisitos previos

  • Un servidor Debian 10 completamente actualizado
  • Privilegios de root en el servidor
  • Un nombre de dominio registrado es opcional, pero recomendado.

Puede seguir este tutorial sin un nombre de dominio usando servidor local en el paso de configuración de Nginx. No podrá instalar un certificado SSL válido, así que omita las instrucciones de Certbot.

1. Instalar Nginx

  1. Instale el paquete Nginx.

                              
                                # apt install nginx
    
                              
                            
  2. Pruebe Nginx navegando a la dirección IP del servidor en un navegador. Verifique que aparezca la página web de Nginx.

  3. Si tiene un dominio registrado, configure las entradas DNS para su servidor. Este tutorial utiliza los siguientes valores:

    • Dirección IPv4: 192.0.2.123
    • Nombres de servidor: googlesyndication.com & www.googlesyndication.com

2. Configurar Flask y uWSGI

  1. Instale uWSGI y Flask.

                              
                                # apt install python3-pip python-dev
    # pip3 install uwsgi flask
    
                              
                            
  2. Cree un directorio de inicio del sitio web.

                              
                                # mkdir /var/www/example
    
                              
                            
  3. Si tiene una aplicación Flask para implementar, muévala a la /var/www/example directorio.

    O bien, puede crear una aplicación Flask simple para probar esta guía.

                              
                                # nano /var/www/example/main.py
    
                              
                            

    Pegar en:

                              
                                from flask import Flask
    app = Flask(__name__)
    
    @app.route("https://www.vultr.com/")
    def index():
    return "Hello World!"
    
    if __name__ == "__main__":
    app.run(host="0.0.0.0")
    
                              
                            
  4. Crear config-uwsgi.ini para uWSGI.

                              
                                # nano /var/www/example/config-uwsgi.ini
    
                              
                            

    Pegar en:

                              
                                [uwsgi]
    
    app = main
    module = %(app)
    callable = app
    
    socket = /var/www/example/example.sock
    chdir = /var/www/example
    chmod-socket = 666
    
    processes = 4
    die-on-term = true
    
                              
                            

    los procesos La línea se puede establecer más alta para servidores más grandes.

3. Configurar Nginx

  1. Elimine la configuración predeterminada de Nginx.

                              
                                # rm /etc/nginx/sites-enabled/default
    
                              
                            
  2. Cree un nuevo archivo de configuración de Nginx.

                              
                                # nano /var/www/example/config-nginx.conf
    
                              
                            

    Pegue el siguiente contenido. Si no tiene un nombre de dominio registrado, utilice servidor local por nombre del servidor en lugar de googlesyndication.com y www.googlesyndication.com.

                              
                                server {
    
        listen 80;
        listen [::]:80;
    
        server_name googlesyndication.com www.googlesyndication.com;
    
        location / {
            include uwsgi_params;
            uwsgi_pass unix:/var/www/example/example.sock;
        }
    }
    
                              
                            
  3. Cree un enlace simbólico desde su configuración de Nginx a la conf.d directorio.

                              
                                # ln -s /var/www/example/config-nginx.conf /etc/nginx/conf.d/
    
                              
                            
  4. Reinicie Nginx.

                              
                                # systemctl restart nginx
    
                              
                            

4. Ejecute uWSGI

  1. Nginx está configurado para enviar tráfico proxy a uWSGI, pero el servicio aún no se está ejecutando. Inicie uWSGI con nohup.

                              
                                # nohup uwsgi /var/www/example/config-uwsgi.ini &
    
                              
                            
  2. Presione CTRL + C para enviar la señal SIGINT y ver que el proceso aún se ejecuta en segundo plano. Para uso en producción, recomendamos ejecutando uWSGI al inicio bajo systemd .

  3. Navegue a su sitio en un navegador web y verifique que vea el mensaje “¡Hola mundo!” mensaje.

5. Instalar certificado SSL

Si tiene un nombre de dominio público, configure el servidor web para HTTPS con un certificado Let’s Encrypt gratuito usando Certbot.

  1. Instale Certbot.

                              
                                # apt install certbot python-certbot-nginx
    
                              
                            
  2. Solicita un certificado SSL.

                              
                                # certbot --nginx
    
                              
                            
  3. Responda las preguntas cuando Certbot se lo solicite y acepte los términos del servicio.

  4. Certbot le preguntará qué nombres de dominio deben tener soporte SSL, presione ENTER para seleccionar todos los nombres.
  5. Cuando se le solicite, elija redirigir el tráfico HTTP a HTTPS.

Conclusión

Después de seguir este tutorial para principiantes, su servidor web Nginx ejecuta la aplicación Flask en uWSGI, protegido con Certbot. Para un uso de producción completo, también debe ejecutar uWSGI al inicio como un usuario normal con permisos limitados. Ver el Mejores prácticas de uWSGI y Matraz de documentación para más información.

Título del artículo Nombre (opcional) Correo electrónico (opcional) Descripción

Enviar sugerencia

Related Posts