【问题标题】:Why can't I hit Flask app when port 5000 is open for inbound traffic on EC2当端口 5000 为 EC2 上的入站流量打开时,为什么我不能点击 Flask 应用程序
【发布时间】:2018-05-16 16:37:56
【问题描述】:

我正在尝试在 EC2 上部署我的 Flask 应用程序。我不想使用 Beanstalk,而是想手动部署它。最终目标是用 nginx 设置 wsgi。在此之前,我只想像在本地开发计算机上那样部署它,即启动 virtualenv,安装所有依赖项,然后运行 ​​python3 application.py。默认情况下,它在端口 5000 上运行。它在本地运行在“localhost:5000/api”。 (api 是蓝图 url)。但是,当我在 EC2 (ubuntu) 实例上执行相同操作时,它不起作用。我把网址“ec2-public-ip:5000/api”放在浏览器中,它说“这个页面不工作。[ip]没有发送任何数据”。

application.py是应用的入口:

from myapp.api.factory import create_app

app = create_app(True)

def main():
    app.run(debug=True, threaded=True)

if __name__ == "__main__":
    main()

我为此实例设置了安全组,允许来自任何地方 (0.0.0.0/0) 的入站流量用于端口 80、22、5000

为什么从5000访问时不起作用?

【问题讨论】:

  • 如果没有指定默认主机是127.0.0.1,它应该是0.0.0.0。所以你将拥有app.run(host='0.0.0.0')。如果它在生产中,我还鼓励您将调试模式设置为 False。

标签: flask amazon-ec2


【解决方案1】:

添加这个

app.run(host= '0.0.0.0')

根据文档

http://flask.pocoo.org/docs/1.0/quickstart/#a-minimal-application

Externally Visible Server 如果您运行该服务器,您会注意到 服务器只能从您自己的计算机访问,而不是从任何 网络中的其他。这是默认设置,因为在调试模式下 该应用程序的用户可以在您的应用程序上执行任意 Python 代码 电脑。

如果您禁用了调试器或信任网络上的用户, 您只需添加即可使服务器公开可用 --host=0.0.0.0 到命令行:

flask run --host=0.0.0.0 这告诉你的操作系统监听 所有公共 IP。

【讨论】:

    猜你喜欢
    • 2017-03-08
    • 2016-11-03
    • 1970-01-01
    • 2015-08-24
    • 2011-11-13
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多