【问题标题】:Flask App in Python listening to all IPsPython中的Flask App监听所有IP
【发布时间】:2015-09-13 12:07:19
【问题描述】:

我的 Flask 应用无法正常运行。这是我的代码:

from flask import Flask
app = Flask(__name__)


@app.route('/')
def hello():
    return "Hello World!"

if __name__ == '__main__':
    app.run(host = '0.0.0.0')

当我在我的 Linode 服务器上运行应用程序时,控制台会显示:在 http://0.0.0.0:5000/ 上运行。我的实际服务器地址是:http://139.xxx.xx.xx。但是,如果我将浏览器指向那里,我会收到权限被拒绝消息。 (我的 app.py 文件位于 var/www/html/mysite.com/public_html 中。有没有人知道如何解决这个问题?我在 host = '0.0.0.0' 中添加了一些其他帖子的描述,但这没有t 似乎在做这个把戏。任何关于此的指针将不胜感激。谢谢!

【问题讨论】:

  • 将脚本放入公共网络文件夹是不够的。您必须部署 Flask,通常使用 wsgi 服务器和 web 服务器。阅读flask.pocoo.org/docs/0.10/deploying了解详情。

标签: python flask


【解决方案1】:

首先检查是从服务器的控制台运行 wget:

wget 127.0.0.1:5000
wget <external ip of machine>:5000

如果第一个有效但第二个无效,则您的防火墙正在阻止该端口。这是有道理的,因为默认情况下不打开 5000。

作为临时测试措施,您可以使用以下命令禁用防火墙:

 /etc/init.d/iptables stop

不要关闭防火墙

反应它:

/etc/init.d/iptables start

如果这能解决问题,那么您需要向 iptables 或您使用的任何防火墙添加例外。

sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT

如果可行,您可以通过运行保存设置

sudo iptables save

否则您添加的规则将在重新启动时丢失

但您可能不想总是在端口 5000 上运行烧瓶。而是在烧瓶应用程序前面放置 apache 或 nginx 之类的东西来完成繁重的工作或使用 mod_wsgi。在 80 端口上运行需要 root 权限。

deployment options

【讨论】:

  • 运行 wget,我得到:连接到 127.0.0.01 (127.0.0.01)|127.0.0.1|:5000... 失败:连接被拒绝。如您所说,添加了端口。再次运行 wget 仍然拒绝连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 2017-08-11
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
相关资源
最近更新 更多