我正在尝试在 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()
Run Code Online (Sandbox Code Playgroud)
我为此实例设置了安全组,它允许来自任何地方 (0.0.0.0/0) 的端口 80、22、5000 的入站流量
为什么从 5000 访问时不起作用?
添加这个
app.run(host= '0.0.0.0')
根据文档
http://flask.pocoo.org/docs/1.0/quickstart/#a-minimal-application
外部可见服务器 如果您运行该服务器,您会注意到该服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。
如果您禁用了调试器或信任您网络上的用户,则只需在命令行中添加 --host=0.0.0.0 即可使服务器公开可用:
flask run --host=0.0.0.0 这告诉您的操作系统侦听所有公共 IP。
| 归档时间: |
|
| 查看次数: |
4293 次 |
| 最近记录: |