运行 Flask 应用程序时 AWS cloud9 超时

2024-03-30

大家好,我正在尝试使用 Flask 设置 AWS cloud9 环境来开发 Web 应用程序。我是 AWS/Flask 的新手,并且遇到了一个问题。 IDE 环境和在浏览器中预览应用程序之间似乎存在问题(我使用的是 Chrome,但也在 IE 中尝试过)。

来自应用程序.py:

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World'


app.run(host=os.getenv('IP', '0.0.0.0'), port=int(os.getenv('PORT', 8080)))

if __name__ == '__main__':
    app.run()
    app.debug(True)

当我在终端(以 root 身份)运行此命令时:

[root@ip-172-31-11-201 environment]# python ./app.py
Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)

当我右键单击http://0.0.0.0:8080/它将打开一个 yab 并将我重定向到公共 IPx.x.x.x:8080最终会超时并给我:

错误连接超时

当我尝试使用 IDE 运行选项运行应用程序时,它将带我:

Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)

此时它也会超时。所以这让我真的很困惑,当我在 cloud9 IDE 之外运行它时,我没有这个问题。我知道在文档中您应该通过端口 8080 指向 0.0.0.0。所以我不太确定为什么使用 run 运行它会更改我指定的 IP。

我还尝试手动输入我的项目和用户名:

https://projectname-c9-username.c9.io/ https://projectname-c9-username.c9.io/

此时它会将我重定向到一个页面,告诉我“找不到我的用户名”。然后我尝试设置一个 cloud9.io 帐户,该帐户已完成,我确认了我的帐户,但无法登录,并且仍然有“找不到用户名”页面。

之后我测试了我的app.py来自 cloud9 本地的文件,并替换为 sublime0.0.0.0 for 127.0.0.1并且它在本地有效。

我的配置中是否缺少任何内容?自从 AWS 收购 cloud9 以来,设置有什么变化吗?我一直在关注在线教程和视频,但就是看不到解决这个问题的方法。

从IDE环境:

# python --version
Python 2.7.12

# pip freeze flask
astroid==1.5.3
aws-cfn-bootstrap==1.4
awscli==1.11.132
Babel==0.9.4
backports.functools-lru-cache==1.4
backports.ssl-match-hostname==3.4.0.2
boto==2.42.0
botocore==1.5.95
chardet==2.0.1
click==6.7
cloud-init==0.7.6
CodeIntel==0.9.3
colorama==0.2.5
configobj==4.7.2
configparser==3.5.0
docutils==0.11
ecdsa==0.11
enum34==1.1.6
Flask==0.12.2
futures==3.0.3
gyp==0.1
ikpdb==1.1.2
Inflector==2.0.11
iniparse==0.3.1
isort==4.2.15
itsdangerous==0.24
jedi==0.11.0
Jinja2==2.7.2
jmespath==0.9.2
jsonpatch==1.2
jsonpointer==1.0
kitchen==1.1.1
lazy-object-proxy==1.3.1
lockfile==0.8
MarkupSafe==0.11
mccabe==0.6.1
paramiko==1.15.1
parso==0.1.0
PIL==1.1.6
ply==3.4
pyasn1==0.1.7
pycrypto==2.6.1
pycurl==7.19.0
pygpgme==0.3
pyliblzma==0.5.3
pylint==1.7.4
pylint-django==0.7.2
pylint-flask==0.5
pylint-plugin-utils==0.2.6
pystache==0.5.3
python-daemon==1.5.2
python-dateutil==2.1
pyxattr==0.5.0
PyYAML==3.10
requests==1.2.3
rsa==3.4.1
simplejson==3.6.5
singledispatch==3.4.0.3
six==1.11.0
subprocess32==3.2.7
urlgrabber==3.10
urllib3==1.8.2
virtualenv==15.1.0
Werkzeug==0.13
wrapt==1.10.11
yum-metadata-parser==1.1.4
zope.cachedescriptors==4.3.0 

谢谢你的帮助!


我通过搜索EC2问题发现:

您必须通过 AWS 防火墙/安全设置。 你必须:

  1. 进入 EC2(从所有 AWS 服务列表中)
  2. 单击安全组
  3. 单击您的 Cloud9 实例
  4. 单击入站
  5. 单击编辑
  6. 单击添加规则
  7. 添加此规则:

    • 对于类型,选择自定义 TCP 规则。 - 所有交通也都有效。
    • 对于端口范围,输入 8080、8081 或 8082。 - 如果您选择“所有流量”,则默认为所有端口。
    • 对于源,选择任意位置,例如 0.0.0.0/0

    这是屏幕截图链接:https://i.stack.imgur.com/xpW5F.jpg https://i.stack.imgur.com/xpW5F.jpg

AWS 确实将这一点隐藏在他们的 C9 文档中。https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html#app-preview-share-security-group https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html#app-preview-share-security-group在通过 Internet 共享正在运行的应用程序中,步骤 2:为实例设置安全组

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行 Flask 应用程序时 AWS cloud9 超时 的相关文章

随机推荐