我正在尝试在EC2上部署我的Flask应用程序。我想手动部署它,而不是使用Beanstalk。最终目标是使用nginx设置wsgi。在此之前,我只想像在本地开发计算机上那样部署它,即启动virtualenv,安装所有依赖项,然后运行python3 application.py
。默认情况下,它在端口5000上运行。它在本地工作在" localhost:5000 / api"。 (api
是蓝图网址)。但是,当我在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访问时无效?
答案 0 :(得分:2)
添加此
app.run(host= '0.0.0.0')
根据文档
http://flask.pocoo.org/docs/1.0/quickstart/#a-minimal-application
外部可见服务器如果您运行服务器,您会注意到这一点 服务器只能从您自己的计算机访问,而不能从任何计算机访问 其他在网络中。这是默认值,因为在调试模式下a 应用程序的用户可以在您的上执行任意Python代码 计算机。
如果禁用了调试器或信任网络上的用户, 只需添加即可使服务器公开 --host = 0.0.0.0到命令行:
flask run --host = 0.0.0.0这告诉你的操作系统要监听 所有公共IP。