首页 > 解决方案 > Flask 应用程序不能暴露在 Droplet 上

问题描述

我正在将烧瓶服务器部署到 Digital Ocean 液滴。

from flask import Flask

app = Flask(__name__)

@app.route("/a/<string:b>")
def deploy(b):
    return "Response"

使用以下命令:

FLASK_APP=server.py python -m flask run --host=0.0.0.0 --port=5555

当我在本地部署应用程序时,我可以通过执行接收响应

curl -XGET localhost:5555/a/random

在 droplet 上部署时,它在内部工作,但在外部调用 droplet 时(尽管在 TCP 上暴露了端口 5555),它不会连接。

有什么可以改变的?我还通过docker在同一个droplet上部署了flask graphql服务器,效果很好。

标签: pythonflaskdigital-ocean

解决方案


这可能是使用 VPS 时的常见问题。如果代码正确,像我这样的人可能经常忘记设置防火墙。

您提到它在本地工作,但在外部不工作。我想应该是。

数字海洋级别:

  • 在 Droplet 防火墙设置中添加入站 TCP 端口 5555

系统级

  • iptables:例如iptables -A INPUT -p tcp -dport 5555 -j ACCEPT
  • 防火墙:例如firewall-cmd --permanent --zone=public --add-port=5555/tcp

或者您可以通过systemctl stop [service-name]或禁用操作系统防火墙service [service-name] stop。你可以google命令。


推荐阅读