Vis*_*rez 0 python amazon-ec2 amazon-web-services flask
我有一个 Flask 应用程序,已将其克隆到我的 aws ec2 实例上。我只能使用虚拟环境运行它(我通过运行以下命令激活它):
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
$ pip install flask==1.1.1
Run Code Online (Sandbox Code Playgroud)
下面是我的应用程序:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
执行时运行得很好env FLASK_APP=app.py flask run。问题是,我想使用我的 aws ec2 的公共 IP 或主机名远程访问公开的路由。每当我尝试访问它时,我都会收到一个 tiemout 错误。我认为这是因为我在虚拟环境中运行烧瓶应用程序,但我不确定。我找不到任何关于如何揭露这一点的好的教程。我这里哪里出错了?
当您运行开发服务器时,它并不用于生产。我想说从您自己的计算机连接到此应用程序的最佳方法是使用 ssh 隧道:
ssh -L 5000:localhost:5000 ec2_addr
Run Code Online (Sandbox Code Playgroud)
然后,您可以将 Web 浏览器指向http://localhost:5000/客户端计算机,该计算机将通过隧道连接到 EC2 实例上的端口 5000。这是连接到远程 Linux 机器上的 Flask(或任何)服务器的快速方法。当您停止该 ssh 会话时,隧道将被破坏。
我想使用我的 aws ec2 的公共 IP 或主机名远程访问公开的路由。
超时并不是因为它在虚拟环境中运行:您可能会发现这是因为您需要通过 EC2 控制台将安全组分配给您的实例。这些允许您打开公共 IP 上的某些端口。
请参阅我写的有关EC2 安全组的其他答案。
不过要小心。您不应该以这种方式公开开发服务器。Digital Ocean 中有很多类似的教程,其中介绍了如何gunicorn使用SSLnginx证书部署 Flask 应用程序Let's Encrypt。您应该发现自己的安全组公开了端口 80 和 443,对端口 80 的请求被httpsnginx 配置重定向到 URL。
如果这听起来很麻烦/您没有 Linux 技能/您不想学习 Linux 技能,那么这些是人们选择 AWS Elastic Beanstalk 等托管服务的常见原因,您可以在其中部署 Flask 应用程序(官方指南),无需担心服务器配置。Heroku 是另一个提供此类功能的(非 AWS)服务。
这实际上取决于您需要/希望获得什么。注意安全!
| 归档时间: |
|
| 查看次数: |
4383 次 |
| 最近记录: |