python - 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服务器,效果很好。
解决方案
这可能是使用 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命令。
推荐阅读
- java - 我的控制器在运行时工作,但 mockkmvc 测试因依赖项而失败,该依赖项甚至不在类中
- c++ - 由于 [abi:cxx11],两个 boost 库之间的符号不匹配
- regex - Google表格中的正则表达式正向向后看
- typescript - 如何在 node.js 打字稿中创建可写的全局变量
- python - 更改我的 BFS,使其返回所有目标路径并且处于同一级别,这是最小的
- c - 为什么我在这条 if 行中有分段错误?
- javascript - 如何将字符串限制为仅 12 个字符
- java - 为 BlueJ 组合 jar 文件
- python - 为什么无缘无故说语法错误
- python - 如何在最小化窗口中运行鼠标和键盘事件