首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何远程访问运行在AWS EC2上的Python应用程序?

如何远程访问运行在AWS EC2上的Python应用程序?
EN

Stack Overflow用户
提问于 2020-02-11 19:28:58
回答 1查看 3.4K关注 0票数 0

我有一个烧瓶应用程序,我已经克隆到我的aws ec2实例。我只能使用虚拟环境来运行它(通过运行以下程序来激活该环境):

代码语言:javascript
运行
复制
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
$ pip install flask==1.1.1

下面是我的应用程序:

代码语言:javascript
运行
复制
from flask import Flask
app = Flask(__name__)

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

if __name__ == "__main__":
    app.run() 

在执行env FLASK_APP=app.py flask run时,它运行得很好。问题是,我希望使用aws 2的公共IP或主机名远程访问暴露的路由。但是,每当我试图访问它时,我都会得到一个清除错误。我认为这是因为我在虚拟环境中运行烧瓶应用程序,但我不确定。我找不到任何关于如何揭露这个问题的好教程。我哪里出问题了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-11 20:34:03

快速安全解决办法:

因为您正在运行开发服务器,这不是用于生产的。我想说,从您自己的机器连接到这个应用程序的最好方法是使用ssh隧道:

代码语言:javascript
运行
复制
ssh -L 5000:localhost:5000 ec2_addr

然后,您可以将您的web浏览器指向客户端计算机上的http://localhost:5000/,并将其隧道到EC2实例上的端口5000。这是一种快速连接到远程Linux盒上的Flask (或任何)服务器的方法。当您停止ssh会话时,隧道就会被破坏。

较长的方法:

我想使用AWSEC2的公共IP或主机名远程访问暴露的路由。

超时并不是因为它在虚拟环境中运行:您可能会发现,这是因为您需要通过EC2控制台为实例分配安全组。这些允许您在公共IP上打开某些端口。

看看我写的关于EC2安全组的另一个答案。

然而,要小心,。您不应该以这种方式公开开发服务器。有许多类似来自数字海洋的教程,包括在gunicornnginx后面部署一个带有Let's Encrypt SSL证书的烧瓶应用程序。您应该发现自己处于一个安全组公开端口80和443的位置,通过nginx配置将对端口80的请求重定向到https URL。

如果这听起来像一大堆麻烦/您没有Linux技能/您不想学习Linux技能,那么这些是人们选择像AWSElasticBean秸秆这样的托管服务的常见原因,您可以对其进行部署您的烧瓶应用程序(官方指南),而不必担心服务器配置。Heroku是另一个(非AWS)服务,它提供这样的功能。

这真的取决于你需要什么/希望得到什么。注意安全!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60176077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档