Flask应用程序不能在Droplet上暴露

Pet*_*ris 6 python flask digital-ocean

我正在将一个烧瓶服务器部署到Digital Ocean droplet.

from flask import Flask

app = Flask(__name__)

@app.route("/a/<string:b>")
def deploy(b):
    return "Response"
Run Code Online (Sandbox Code Playgroud)

使用以下命令:

FLASK_APP=server.py python -m flask run --host=0.0.0.0 --port=5555
Run Code Online (Sandbox Code Playgroud)

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

curl -XGET localhost:5555/a/random
Run Code Online (Sandbox Code Playgroud)

在Droplet上部署时,它在内部工作,但在外部调用Droplet时(尽管在TCP上暴露了端口5555),它无法连接.

有什么可以改变的?我也正在通过docker在同一个Droplet上部署一个烧瓶graphql服务器,它工作得很好.

Sam*_*hen 5

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

你提到它在本地工作但不在外部工作.我想它应该是.

数字海洋水平:

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

系统级别

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

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