【问题标题】:How to make flask server running in a VM externally available?如何使运行在 VM 中的烧瓶服务器在外部可用?
【发布时间】:2015-10-14 17:47:20
【问题描述】:

如果我在本地机器上运行我的烧瓶应用程序,我会通过连接到 http://127.0.0.1:5000/report?id=1 获得正确的结果

但现在我想通过将我的烧瓶部署在 azure 中的 VM 中使其在外部可见。我在我的虚拟机上打开了 80 端口。我正在使用这个运行烧瓶应用程序:

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

我仍然无法使用它连接到我的烧瓶服务器(假设我的 VM 的公共 IP 地址是 x.x.x.x):

http://x.x.x.x:5000/report?id=1

任何建议我应该如何继续它?

编辑:我可以在端口 80 上 psping 我的 VM 的公共 IP 地址。

【问题讨论】:

  • 你能ping通你的虚拟机的ip吗?确保您为 VM 网络设置使用桥接网络适配器?这是到达 vm 的 ip 的问题,您正在正确运行烧瓶 app.run 以使其在外部可见...在 Windows 中,我有时必须打开连接管理器并编辑适配器属性并启用或禁用各种复选框(主要与“网络发现”有关)
  • 是的,当我在端口 80 上 psping 我的虚拟机时,我能够连接到它
  • 什么是psping? ping 不使用端口 80 所以我不确定你的意思?你能 ssh 到你的 vm ip 吗?
  • 由于在 Azure 中禁用了 ICMP,因此 psping 是测试连接的方法。你可以在这里阅读更多内容:blogs.msdn.com/b/mast/archive/2014/06/22/…
  • 对不起,我误解了这个问题......我认为这是 azure 特有的,我想我对你没有多大帮助:/

标签: python azure flask


【解决方案1】:

问题与 Flask 无关,因为您打开了应用程序以侦听 any 公共 IP (0.0.0.0)。

此外,您应该在 azure 配置中进行适当的端口映射。谷歌说,你可以看看这里:https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-set-up-endpoints/

编辑

有些同事经常遇到的另一个想法是,您可能打开了 Skype,它在某种程度上使用了端口 80/443,因此阻塞了它。如果您这样做,请关闭 Skype,或者为您的网络应用使用不同的端口。

【讨论】:

  • 对不起,那你真的应该再检查一次。
【解决方案2】:

以下是与 Azure 的交易: 如果从 Azure 门户打开端口,VM 中的防火墙仍会阻止该端口。您必须手动进入并在 VM 中创建防火墙设置,以保持端口 5000 为您的烧瓶服务器打开。完成后,您应该能够连接到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2019-05-13
    • 2019-09-21
    • 1970-01-01
    相关资源
    最近更新 更多