lo que tengo:
Hice una aplicación web simple usando Flask, que funciona muy bien en localhost.
lo que quiero lograr:
Quiero implementarlo para que sea visible en Internet.
Debido a que Flask dice que el servidor de producción no debe usarse para la implementación, instalé gunicorn.
Logré que funcionara en localhost (ejecutando gunicorn server:app ).
Luego traté de hacerlo público usando la opción -b 0.0.0.0:5000 . decía que se está ejecutando en 192.168....:5000 Ahora podía acceder al sitio web usando esa dirección IP desde mi computadora y también desde mi teléfono conectado al mismo wifi. sin embargo, no pude conectarme al sitio web cuando no usé este wifi.
cuando busqué sobre esto, descubrí que el rango de direcciones IP 192.168.... está reservado para la red local y no se puede acceder desde ningún otro lugar.
¿Cómo necesito ejecutar el script para que sea accesible desde cualquier lugar? ¿Necesito modificar la configuración del firewall? ¿Quizás hay una mejor manera de implementar una aplicación de este tipo en la máquina local usando un marco diferente?
Solo alguna información adicional:
No sé nada sobre gunicornio. Pero lo que solía usar cuando necesitaba implementar una aplicación de frasco era pythonanywhere . Tienen un gran servicio de hosting totalmente gratuito. Es realmente rápido de implementar, no necesita recursos de su computadora y es simplemente genial. También tendría que reenviar el puerto 5000 para su computadora para permitir que otros dispositivos que no estén en la misma red accedan a su aplicación de computadora/frasco. Eso viene con problemas de seguridad. Sin embargo, no necesita nada de eso cuando usa pythonanywhere.
También hay otros excelentes servicios de alojamiento como ese. Es solo el único que conozco y uso hasta ahora, pero seguro que encontrarás otros si no te gusta ese.
Tendrías que hacer los siguientes pasos:
lea y aprenda mucho sobre seguridad para servidores web, luego lea un poco más, está lleno de riesgos
encuentre la dirección IP de su Mac en su red local y asegúrese de que esté fijada, es decir, configurada como estática en su Mac (en "Preferencias del sistema -> Red" ) o reservada en las tablas DHCP de su enrutador (colocando la dirección MAC de su Mac en su asignación tablas) para que siempre obtenga la misma dirección local en su red interna cuando se inicia
inicie sesión en su enrutador y configure "Reenvío de puertos" para reenviar solicitudes externas (procedentes de Internet) para el puerto 5000 (o algún otro puerto) a la dirección IP fija de su Mac y el puerto 5000 donde Gunicorn está sirviendo
inicie sesión en su enrutador y encuentre su dirección IP WAN, o vaya a http://whatsmyip.com para obtener la dirección que necesita poner en su navegador, o sus amigos necesitan poner en sus navegadores para ver su nuevo y brillante sitio web
tal como está, esto funcionará hasta la próxima vez que su enrutador se reinicie cuando su ISP probablemente le asigne una nueva dirección IP. Si desea que sea permanente, debe 1) pedirle a su ISP una dirección IP estática o 2) suscribirse a un servicio DDNS (por ejemplo, noip.com o dyndns.com) o 3) decirle a sus amigos su nueva dirección IP cada vez reinicias tu enrutador
Esta pregunta no tiene nada que ver con Python o Gunicorn, sino con las redes (por lo que tal vez StackOverflow no sea el lugar correcto para preguntar, sino otra comunidad como ServerFault )
Actualmente, su aplicación ya está expuesta en su máquina en el puerto definido, por lo que el siguiente paso sería reenviar todo el tráfico que llega a su enrutador allí.
Para hacer eso, deberá configurar el firewall de su enrutador para aceptar el tráfico entrante a través de un puerto deseado y finalmente reenviar el tráfico que proviene de ese puerto a su máquina en el puerto 5000 .
Además, en el caso de que ya tengas todo configurado, solo funcionará si tu ISP te proporciona un solo IPv4, lo que actualmente ya no sucede, pero en realidad lo estás compartiendo con pocas personas más. Otra opción sería que configure el tráfico entrante IPv6.
Como puedes ver, esta no es una tarea sencilla ni que deba hacerse sin los debidos cuidados, ya que estarías literalmente abriendo tu red a posibles atacantes.
Así que, para simplificarte al máximo, dado que ya tienes Gunicorn, te recomendaría utilizar alguno de los recursos expuestos por otros usuarios como Heroku o Netlify que son gratuitos para una sola aplicación y cumplirán tus expectativas sin que requieren una gran cantidad de conocimientos de redes.