为什么可以';当端口5000为EC2上的入站流量打开时,我点击Flask应用程序

为什么可以';当端口5000为EC2上的入站流量打开时,我点击Flask应用程序,flask,amazon-ec2,Flask,Amazon Ec2,我正在尝试在EC2上部署我的Flask应用程序。我想手动部署Beanstalk,而不是使用Beanstalk。最终目标是使用nginx建立wsgi。在此之前,我只想像在本地开发人员计算机上那样部署它,即启动virtualenv,安装所有依赖项,然后运行python3 application.py。默认情况下,它在端口5000上运行。它在本地“localhost:5000/api”工作。(api是蓝图url)。然而,当我在EC2(ubuntu)实例上执行相同的操作时,它就不起作用了。我把url“e

我正在尝试在EC2上部署我的Flask应用程序。我想手动部署Beanstalk,而不是使用Beanstalk。最终目标是使用nginx建立wsgi。在此之前,我只想像在本地开发人员计算机上那样部署它,即启动virtualenv,安装所有依赖项,然后运行
python3 application.py
。默认情况下,它在端口5000上运行。它在本地“localhost:5000/api”工作。(
api
是蓝图url)。然而,当我在EC2(ubuntu)实例上执行相同的操作时,它就不起作用了。我把url“ec2公共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()
我为这个实例设置了安全组,它允许来自端口80、225000的任何位置(0.0.0.0/0)的入站流量

为什么从5000访问时它不工作?

添加此选项

app.run(主机='0.0.0.0')

根据文件

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

如果禁用了调试器或信任网络上的用户, 只需添加 --主机=0.0.0.0到命令行:

flask run--host=0.0.0.0这会告诉您的操作系统要侦听 所有公共IP

加上这个

app.run(主机='0.0.0.0')

根据文件

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

如果禁用了调试器或信任网络上的用户, 只需添加 --主机=0.0.0.0到命令行:

flask run--host=0.0.0.0这会告诉您的操作系统要侦听 所有公共IP


默认主机(如果未指定)是
127.0.0.1
,它应该是
0.0.0
。因此,您将拥有
app.run(host='0.0.0.0')
。如果调试模式在生产环境中,我还建议您将其设置为False。如果未指定,则默认主机为
127.0.0.1
它应该是
0.0.0
。因此,您将拥有
app.run(host='0.0.0.0')
。如果调试模式在生产环境中,我还建议您将其设置为False。