Contenido del curso

Ejecutando FastAPI con NGINX

Resumen

En el mundo de la programación web, saber cómo desplegar aplicaciones de manera efectiva es esencial. Uno de los desafíos más grandes es asegurarse de que la aplicación se ejecute continuamente y sea accesible para los usuarios. PM2 y Nginx son dos herramientas que juegan un rol crucial en este proceso. La primera es un gestor de procesos de producción para Node.js, y la segunda es un servidor web que también puede actuar como un proxy inverso, entre otras funciones. En esta guía, vamos a explorar cómo usar PM2 para mantener nuestra aplicación ejecutándose y cómo configurar Nginx para poder acceder a nuestra aplicación mediante nuestra dirección IP.

¿Cómo verificar que nuestra aplicación se ejecuta correctamente?

Antes de realizar cualquier configuración avanzada, es importante asegurarse de que la aplicación se ejecuta sin problemas. Para ello, podemos usar el siguiente comando:

unicorn main app --port 5000 --host 0.0.0.0

Este comando inicia la aplicación y la hace accesible a través de la red en el puerto 5000. Tras ejecutarlo, podemos ir al navegador e ingresar nuestra IP seguida de :5000 para ver si todo funciona correctamente.

¿Qué es PM2 y cómo se usa para mantener la aplicación ejecutándose?

PM2 es un gestor de procesos que nos ayuda a mantener nuestra aplicación en ejecución de manera continua. Para utilizar PM2, primero detenemos la aplicación que se está ejecutando y ejecutamos:

pm2 start "unicorn main app --host 0.0.0.0 --port 5000" --name myMovieApi

Este comando le dice a PM2 que inicie nuestra aplicación como un proceso con un nombre específico, permitiéndonos luego realizar otras tareas mientras la aplicación sigue en ejecución.

¿Cómo configurar Nginx para acceder a nuestra aplicación utilizando nuestra dirección IP?

La configuración de Nginx nos permite eliminar la necesidad de especificar un puerto al acceder a nuestra aplicación. Para configurar Nginx, seguimos estos pasos:

  1. Salimos del entorno virtual de nuestra aplicación con el comando deactivate.
  2. Creamos un nuevo archivo de configuración para Nginx con nano dentro de /etc/nginx/sites-available.
  3. Añadimos la configuración de server a este archivo, especificando que queremos que nuestra aplicación sea accesible a través del puerto por defecto HTTP (80) y la IP correspondiente.
  4. Utilizamos la directiva proxy_pass para redireccionar las peticiones al puerto 5000 donde nuestra aplicación de FastAPI está siendo ejecutada por PM2.
  5. Guardamos el archivo y creamos un enlace simbólico en /etc/nginx/sites-enabled.
  6. Verificamos y reiniciamos el servicio de Nginx para aplicar los cambios.

La configuración del servidor quedaría de la siguiente manera:

server { listen 80; server_name mi_ip; location / { proxy_pass http://127.0.0.1:5000; } }

Una vez que reiniciamos Nginx, al ingresar nuestra IP en el navegador, deberíamos ser capaces de ver nuestra aplicación cargándose directamente, sin necesidad de especificar el puerto.

¿Qué hacer si no vemos nuestra aplicación después de configurar Nginx?

Es posible que después de configurar Nginx y acceder a nuestra IP, la aplicación no se muestre inmediatamente. Esto puede ser debido a que Nginx no ha aplicado los cambios o puede que haya un error en la configuración. En este caso, se recomienda:

  • Verificar el estado de Nginx con systemctl status nginx para detectar posibles errores.
  • Esperar un poco, ya que a veces los cambios no son inmediatos.
  • Revisar detalladamente la configuración del archivo para asegurarse de que no hay errores de sintaxis o configuración.

Recuerda que el camino hacia la maestría en el despliegue de aplicaciones web es iterativo y cada paso te acerca más al éxito. ¡Sigue adelante con tu aprendizaje!