15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
01.11.2024
3 +1

Cómo Instalar Flask en Hosting: Una Guía Completa Paso a Paso

Flask es un marco web ligero y flexible para Python que permite a los desarrolladores crear e implementar aplicaciones web de forma rápida y eficiente. Ya sea que estés lanzando un proyecto personal, una API REST o un servicio web a gran escala, saber cómo instalar y configurar correctamente Flask en un entorno de alojamiento es una habilidad esencial. Esta guía completa te guía a través de cada paso — desde la configuración del servidor hasta la implementación en producción con Gunicorn y Nginx.

1. Requisitos previos

Antes de sumergirte en el proceso de instalación, asegúrate de tener lo siguiente en su lugar:

Entorno de alojamiento que admita Python

Necesitas un servicio de alojamiento que te dé control total sobre tu entorno de servidor. Los planes de alojamiento compartido a menudo restringen la ejecución de Python, por lo que para implementaciones de Flask, se recomienda encarecidamente un plan de VPS Hosting o un Servidor Dedicado. Estas opciones te dan acceso root, capacidades completas de gestión de paquetes y la flexibilidad para configurar tu stack exactamente como lo necesites.

Acceso SSH

Necesitarás acceso SSH para conectarte a tu servidor remoto y ejecutar comandos. La mayoría de entornos VPS y servidores dedicados basados en Linux admiten esto de forma predeterminada.

Python instalado

Se recomienda Python 3.8 o superior. La mayoría de entornos de alojamiento modernos vienen con Python preinstalado, pero lo verificaremos durante la configuración.

Opcional: Un nombre de dominio

Si planeas hacer que tu aplicación Flask sea accesible públicamente a través de un dominio en lugar de una dirección IP sin procesar, considera registrar uno a través de Registro de Dominios antes de comenzar.

2. Conectándose a tu servidor a través de SSH

Abre tu terminal (Linux/macOS) o un cliente SSH como PuTTY (Windows) y conéctate a tu servidor:

ssh username@your_server_ip

Reemplaza username con tu nombre de usuario del servidor real y your_server_ip con la dirección IP pública de tu servidor.

Una vez conectado, verifica que Python 3 esté disponible:

python3 --version

Deberías ver una salida similar a Python 3.10.x. Si Python no está instalado, procede a instalarlo:

sudo apt install python3

3. Actualizando tu servidor

Antes de instalar cualquier paquete, es una buena práctica actualizar la lista de paquetes de tu sistema y actualizar los paquetes existentes a sus versiones más recientes:

sudo apt update
sudo apt upgrade -y

Esto asegura que estés trabajando con las versiones más estables y seguras de todas las dependencias.

4. Instalando Flask

Paso 1: Instalar pip

pip es el gestor de paquetes de Python y es necesario para instalar Flask y otras bibliotecas de Python. Instálalo si aún no está presente:

sudo apt install python3-pip -y

Verifica la instalación:

pip3 --version

Paso 2: Crear un directorio de proyecto

Organiza tu aplicación creando un directorio dedicado:

mkdir my_flaskapp
cd my_flaskapp

Paso 3: Configurar un entorno virtual

Usar un entorno virtual aísla las dependencias de tu proyecto de la instalación global de Python, previniendo conflictos de versión y manteniendo tu servidor limpio:

sudo apt install python3-venv -y
python3 -m venv venv

Activa el entorno virtual:

source venv/bin/activate

Tu indicador de terminal cambiará para indicar que el entorno virtual está activo, típicamente mostrando (venv) al principio de la línea.

Paso 4: Instalar Flask

Con el entorno virtual activado, instala Flask usando pip:

pip install Flask

Confirma la instalación:

flask --version

Deberías ver la versión de Flask junto con las versiones de Python y Werkzeug.

5. Creando una aplicación Flask simple

Paso 1: Crear el archivo de aplicación

Crea un nuevo archivo llamado app.py dentro de tu directorio de proyecto:

nano app.py

Paso 2: Escribir tu aplicación Flask

Añade el siguiente código mínimo de aplicación Flask:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, World! Flask is running successfully."

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Desglose del código:

  • Flask(__name__) — Crea una nueva instancia de aplicación Flask.
  • @app.route('/') — Define una ruta URL para la página de inicio.
  • app.run(host='0.0.0.0', port=5000) — Inicia el servidor de desarrollo, haciéndolo accesible en todas las interfaces de red en el puerto 5000.

Paso 3: Guardar y salir

Presiona CTRL + X, luego Y, y presiona Enter para guardar el archivo y salir del editor nano.

6. Ejecutando tu aplicación Flask en modo de desarrollo

Inicia el servidor de desarrollo de Flask para probar tu aplicación:

python app.py

Tu aplicación ahora será accesible en un navegador web en:

http://your_server_ip:5000

> Importante: El servidor de desarrollo integrado de Flask no es adecuado para uso en producción. Es de un solo hilo, no está optimizado para el rendimiento y carece de características de seguridad críticas. Siempre usa un servidor WSGI de grado de producción para implementaciones en vivo.

7. Implementando Flask en un entorno de producción con Gunicorn

Para implementaciones en producción, Gunicorn (Green Unicorn) es el servidor HTTP WSGI de Python más utilizado. Maneja múltiples solicitudes concurrentes de manera eficiente e se integra perfectamente con Nginx.

Paso 1: Instalar Gunicorn

Con tu entorno virtual aún activo, instala Gunicorn:

pip install gunicorn

Paso 2: Ejecutar tu aplicación con Gunicorn

Lanza tu aplicación Flask usando Gunicorn, vinculándola a localhost en el puerto 8000:

gunicorn app:app -b 127.0.0.1:8000 --workers 3

Explicación de parámetros:

  • app:app — Se refiere al objeto app dentro del archivo app.py.
  • -b 127.0.0.1:8000 — Vincula Gunicorn a localhost en el puerto 8000 (Nginx manejará el tráfico externo).
  • --workers 3 — Genera 3 procesos de trabajo para manejar solicitudes concurrentes. Una fórmula común es (2 × CPU cores) + 1.

Paso 3: Ejecutar Gunicorn como servicio Systemd (recomendado)

Para asegurar que Gunicorn se inicie automáticamente al reiniciar el servidor, crea un archivo de servicio systemd:

sudo nano /etc/systemd/system/my_flaskapp.service

Añade la siguiente configuración:

[Unit]
Description=Gunicorn instance to serve my_flaskapp
After=network.target

[Service]
User=your_username
Group=www-data
WorkingDirectory=/home/your_username/my_flaskapp
Environment="PATH=/home/your_username/my_flaskapp/venv/bin"
ExecStart=/home/your_username/my_flaskapp/venv/bin/gunicorn app:app -b 127.0.0.1:8000 --workers 3

[Install]
WantedBy=multi-user.target

Reemplaza your_username con tu nombre de usuario del servidor real. Luego habilita e inicia el servicio:

sudo systemctl daemon-reload
sudo systemctl start my_flaskapp
sudo systemctl enable my_flaskapp

Verifica el estado del servicio:

sudo systemctl status my_flaskapp

8. Configurando Nginx como proxy inverso

Nginx actúa como un proxy inverso, situándose frente a Gunicorn y manejando todo el tráfico HTTP/HTTPS entrante. Esta configuración mejora el rendimiento, permite la terminación SSL y te permite servir archivos estáticos de manera eficiente.

Paso 1: Instalar Nginx

sudo apt install nginx -y

Paso 2: Crear un archivo de configuración de Nginx

Crea un nuevo bloque de servidor para tu aplicación Flask:

sudo nano /etc/nginx/sites-available/my_flaskapp

Añade la siguiente configuración:

server {
    listen 80;
    server_name your_domain_or_ip;  # Replace with your domain or server IP

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static {
        alias /home/your_username/my_flaskapp/static;
        expires 30d;
    }
}

Paso 3: Habilitar la configuración

Crea un enlace simbólico para habilitar el sitio y prueba la configuración de Nginx:

sudo ln -s /etc/nginx/sites-available/my_flaskapp /etc/nginx/sites-enabled
sudo nginx -t

Si la prueba devuelve syntax is ok y test is successful, reinicia Nginx:

sudo systemctl restart nginx

Tu aplicación Flask ahora es accesible en http://your_domain_or_ip en el puerto 80.

9. Asegurando tu aplicación Flask con SSL/HTTPS

Ejecutar tu aplicación sobre HTTPS ya no es opcional — es un requisito fundamental para la seguridad, la confianza del usuario y las clasificaciones SEO. Puedes obtener e instalar un certificado SSL gratuito usando Certbot con Let’s Encrypt, o comprar un certificado premium a través de Certificados SSL para validación mejorada y cobertura de garantía.

Instalar Certbot y obtener un certificado SSL gratuito

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot modificará automáticamente tu configuración de Nginx para habilitar HTTPS y configurar la renovación automática de certificados.

Verifica que la renovación automática esté configurada:

sudo certbot renew --dry-run

10. Configuración del cortafuegos

Asegúrate de que el cortafuegos de tu servidor permita tráfico en los puertos necesarios:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

Nginx Full abre tanto el puerto 80 (HTTP) como el puerto 443 (HTTPS).

11. Solución de problemas comunes

ProblemaCausa probableSolución
502 Bad GatewayGunicorn no está ejecutándoseVerifica sudo systemctl status my_flaskapp
Permission denied en socketPermisos de archivo incorrectosAsegúrate de que el usuario de Nginx tenga acceso al directorio de la aplicación
Aplicación Flask no encontradaDirectorio de trabajo incorrecto en archivo de servicioVerifica la ruta WorkingDirectory en la configuración systemd
Puerto 5000 no accesibleCortafuegos bloqueando el puertoAbre el puerto con sudo ufw allow 5000 (solo desarrollo)
ModuleNotFoundErrorEntorno virtual no activadoAsegúrate de que ExecStart apunte al binario Python/Gunicorn del venv

12. Resumen y próximos pasos

Implementar una aplicación Flask en un servidor de alojamiento implica varios pasos interconectados: configurar un entorno de servidor limpio, instalar Python y Flask dentro de un entorno virtual, configurar Gunicorn como servidor WSGI de producción, y colocar Nginx al frente como proxy inverso. Añadir encriptación SSL finaliza una implementación segura y lista para producción.

Aquí hay un resumen rápido del stack completo de implementación:

  • Flask — Marco web de Python
  • Gunicorn — Servidor WSGI de producción
  • Nginx — Proxy inverso y servidor de archivos estáticos
  • SSL/TLS — Encriptación HTTPS
  • Systemd — Gestión de procesos y reinicio automático

Para la mejor experiencia de alojamiento de Flask,

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar