如何在AWS Ubuntu上启用端口5000

20

我有一个运行在AWS Ubuntu服务器上端口为5000的Flask应用程序(Flask默认运行在端口5000)。但是当我尝试访问该端口时,它从未连接成功。

我在AWS控制台上添加了一个安全组,类型为自定义TCP,端口为5000,IP地址为0.0.0.0/0,但仍然无法访问。

我需要重新启动服务器吗?还是我错过了什么细节?

如果需要提供任何其他信息,请告诉我。


你可以发布 netstat -an | grep :5000 的输出吗? - Will
2个回答

29

除了允许安全组通过端口5000进行访问外,您还需要确保应用程序在可以接受来自外部的TCP连接的IP上进行侦听。要侦听所有IP,请在您的应用程序中使用以下命令:

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

不是:

if __name__ == '__main__':
    app.run(host='127.0.0.1', debug = False)

要查看您的应用程序正在侦听的地址,您可以运行此命令:

netstat -an | grep :5000

进行这些更改后,您需要重新启动Flask应用程序。

我假设您只是在开发和测试时使用它,因为您将其保留在端口5000上,但是当您准备将应用程序部署到生产环境中时,您需要将其放在真正的Web服务器后面。我建议使用nginxuWSGI这里有一个指南来配置Flask + nginx + uWSGI,并且这里是来自Flask的官方文档相关主题。


1
谢谢@Will,我想使用nginx和uWSGI来做你提到的类似事情。这份文档会对我有帮助。 - Rookie
你的回答非常完美。再次感谢。 - Rookie
没问题,我很高兴能帮到你 :) - Will
谢谢Will,已经搞定了。 - Ashutosh
非常感谢,伙计。我花了一个小时才找到这个。 - avadhut007

14

除了@Will的回答之外,可能你正在使用的Ubuntu AMI默认带有限制性的iptables规则。

sudo iptables -L

列出任何当前存在的规则。 使用:

sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT

如有必要,请打开端口。


1
好观点,我没有想到,谢谢 :) - Will
这对我在Amazon Linux AMI上的ID_LIKE =“rhel fedora”非常有帮助。 - Daryl Spitzer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接