如何在AWS ubuntu上启用端口5000

Roo*_*kie 16 python amazon-ec2 amazon-web-services flask ubuntu-14.04

我在端口5000上的AWS Ubuntu服务器上运行了一个烧瓶应用程序(烧瓶在端口5000上运行默认值).但是当我尝试访问该端口上的服务器时,它永远不会连接.

我在AWS控制台Custom TCP上添加了一个安全组,作为5000任何IP地址的端口0.0.0.0/0,但我仍然无法访问它.

我必须重启服务器吗?或者我错过了什么?

让我知道要提供的任何其他信息.

Wil*_*ill 25

除了允许通过安全组访问端口5000之外,您还需要确保您的应用正在侦听可以接受来自外部的TCP连接的IP.要收听所有IP,请在您的应用中使用:

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug = False)
Run Code Online (Sandbox Code Playgroud)

代替:

if __name__ == '__main__':
    app.run(host='127.0.0.1', debug = False)
Run Code Online (Sandbox Code Playgroud)

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

netstat -an | grep :5000
Run Code Online (Sandbox Code Playgroud)

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

我假设您只是将它用于开发和测试,因为您将其保留在端口上5000,但是,当您准备将应用程序部署到生产环境中时,您需要将其置于真正的Web服务器之后.我建议在uWSGI中使用nginx.以下是配置Flask + nginx + uWSGI的指南,这里是Flask关于该主题的官方文档.


mbr*_*rig 10

除了@Will的答案之外,你可能会使用默认的限制性iptables规则来使用你所使用的Ubuntu AMI.使用:

sudo iptables -L
Run Code Online (Sandbox Code Playgroud)

列出任何现有规则.使用:

sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

必要时打开端口.