热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

向AWSElasticBeanstalk部署Flask应用程序

https:docs.aws.amazon.comzh_cnelasticbeanstalklatestdgcreate-deploy-python-flask.html向AWSE

https://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/create-deploy-python-flask.html

向 AWS Elastic Beanstalk 部署 Flask 应用程序

Flask 是一种适用于 Python 的开源 Web 应用程序框架。本教程将演练生成 Flask 应用程序并将其部署到 AWS Elastic Beanstalk 环境的过程。

小节目录

  • 先决条件
  • 通过 Flask 设置 Python 虚拟环境
  • 创建 Flask 应用程序
  • 使用 EB CLI 部署站点
  • 清除
  • 后续步骤

先决条件

本教程假设您对基本 Elastic Beanstalk 操作和 Elastic Beanstalk 控制台有一定了解。如果尚不了解,请按照开始使用 Elastic Beanstalk 中的说明启动您的第一个 Elastic Beanstalk 环境。

为了遵循本指南中的步骤,您需要命令行终端或外壳,以便运行命令。命令显示在列表中,以提示符 ($) 和当前目录名称(如果有)开头:

~/eb-project$ this is a command
this is output

在 Linux 和 macOS 中,可使用您首选的外壳程序和程序包管理器。在 Windows 10 中,您可以安装 Windows Subsystem for Linux,获取 Ubuntu 和 Bash 与 Windows 集成的版本。

Flask 需要 Python 2.7 或 3.4 或更新版本。在本教程中,我们使用 Python 3.6 和相应的 Elastic Beanstalk 平台版本。按照设置 Python 开发环境上的说明操作来安装 Python。

Flask 框架将作为此教程的一部分安装。

本教程还使用 Elastic Beanstalk 命令行界面 (EB CLI)。有关安装和配置 EB CLI 的详细说明,请参阅使用安装脚本安装 EB CLI 和配置 EB CLI。

通过 Flask 设置 Python 虚拟环境

为应用程序创建项目目录和虚拟环境并安装 Flask。

设置项目环境

  1. 创建项目目录。

    ~$ mkdir eb-flask
    ~$ cd eb-flask

  2. 创建和激活名为 virt 的虚拟环境:

    ~/eb-flask$ virtualenv virt
    ~$ source virt/bin/activate
    (virt) ~/eb-flask$

    您将看到您的命令提示符前面带有 (virt),表明您在虚拟环境中。在本教程的其余部分中使用虚拟环境。

  3. 使用 pip install 安装 Flask:

    (virt)~/eb-flask$ pip install flask==1.0.2

  4. 使用 pip freeze 查看已安装的库:

    (virt)~/eb-flask$ pip freeze
    click==6.7
    Flask==1.0.2
    itsdangerous==0.24
    Jinja2==2.10
    MarkupSafe==1.0
    Werkzeug==0.14.1

    此命令列出虚拟环境中已安装的所有程序包。由于您在虚拟环境中,因此不会显示全局安装的程序包,例如 EB CLI。

  5. 将来自 pip freeze 的输出保存到名为 requirements.txt 的文件中。

    (virt)~/eb-flask$ pip freeze > requirements.txt

    在部署期间,此文件将指示 Elastic Beanstalk 安装库。有关更多信息,请参阅 要求文件。

创建 Flask 应用程序

接下来,创建您将使用 Elastic Beanstalk 部署的应用程序。我们会创建一个“Hello World”RESTful Web 服务。

在此目录中创建名为 application.py 的新文本文件,包含以下内容:

例 ~/eb-flask/application.py

from flask import Flask# print a nice greeting.
def say_hello(username = "World"): return '

Hello %s!

\n' % username # some bits of text for the page. header_text = ''' \n \n''' instructions = '''

Hint: This is a RESTful web service! Append a username to the URL (for example: /Thelonious) to say hello to someone specific.

\n''' home_link = '

Back

\n' footer_text = '\n' # EB looks for an 'application' callable by default. application = Flask(__name__) # add a rule for the index page. application.add_url_rule('/', 'index', (lambda: header_text + say_hello() + instructions + footer_text)) # add a rule when the page is accessed with a name appended to the site # URL. application.add_url_rule('/', 'hello', (lambda username: header_text + say_hello(username) + home_link + footer_text)) # run the app. if __name__ == "__main__": # Setting debug to True enables debug output. This line should be # removed before deploying a production app. application.debug = True application.run()

本示例输出根据访问服务所使用的路径而变化的自定义问候语。

注意

通过在运行应用程序之前添加 application.debug = True,可以启用调试输出以防出现问题。这对于开发工作来说是一个很好的做法,但是您应该在生产代码中删除调试语句,因为调试输出会暴露应用程序的内部机制。

使用 application.py 作为文件名并提供可调用的 application 对象(在本示例中为 Flask 对象)可允许 Elastic Beanstalk 轻松地找到应用程序代码。

将 application.py 与 Python 一起运行:

(virt) ~/eb-flask$ python application.py* Serving Flask app "application" (lazy loading)* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: on* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)* Restarting with stat* Debugger is active!* Debugger PIN: 313-155-123

在您的 Web 浏览器中打开 http://127.0.0.1:5000/。您应该看到应用程序正在运行,并且会显示索引页面:

检查服务器日志,查看请求的输出。您可键入 Ctrl+C,停止 Web 服务器并返回到虚拟环境。

如果您看到的是调试输出,请修复错误并确保应用程序正在本地运行,然后再为 Elastic Beanstalk 配置应用程序。

使用 EB CLI 部署站点

您已添加在 Elastic Beanstalk 上部署应用程序所需的全部内容。您的项目目录现在应该如下所示:

~/eb-flask/
|-- virt
|-- application.py
`-- requirements.txt

不过,不需要 virt 文件夹即可使应用程序在 Elastic Beanstalk 上运行。在部署时,Elastic Beanstalk 会在服务器实例上创建新的虚拟环境,并安装 requirements.txt 中列出的库。要最大程度地减小部署期间上传的源包的大小,请添加 .ebignore 文件,此文件告知 EB CLI 忽略 virt 文件夹。

例 ~/eb-flask/.ebignore

virt

下一步,您将创建应用程序环境并使用 Elastic Beanstalk 部署已配置的应用程序。

创建环境和部署 Flask 应用程序

  1. 使用 eb init 命令,初始化 EB CLI 存储库:

    ~/eb-flask$ eb init -p python-3.6 flask-tutorial --region us-east-2
    Application flask-tutorial has been created.

    此命令创建名为 flask-tutorial 的新应用程序,并配置本地存储库,以最新的 Python 3.6 平台版本创建环境。

  2. (可选) 再次运行 eb init,以配置默认密钥对,以便连接到使用 SSH 运行应用程序的 EC2 实例:

    ~/eb-flask$ eb init
    Do you want to set up SSH for your instances?
    (y/n): y
    Select a keypair.
    1) my-keypair
    2) [ Create new KeyPair ]

    如果您已有密钥对,请选择一个密钥对,或按提示创建新密钥对。如果您没有看到提示或需要以后更改设置,请运行 eb init -i

  3. 使用 eb create 创建环境并将应用程序部署到此环境中:

    ~/eb-flask$ eb create flask-env

环境创建大约需要 5 分钟,将创建以下资源:

  • EC2 实例 – 配置来在您选择的平台上运行 Web 应用程序的 Amazon Elastic Compute Cloud (Amazon EC2) 虚拟机。

    各平台运行一组特定软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 nginx 作为 Web 应用程序前的反向代理,向其转发请求、提供静态资产以及生成访问和错误日志。

  • 实例安全组 – 配置 Amazon EC2 安全组以允许端口 80 上的入站流量。通过此资源,HTTP 流量可以从负载均衡器到达运行您的 Web 应用程序的 EC2 实例。默认情况下,其他端口不允许流量进入。

  • 负载均衡器 – 配置来向运行您的应用程序的实例分配请求的 Elastic Load Balancing 负载均衡器。负载均衡器还使您无需将实例直接公开在 Internet 上。

  • 负载均衡器安全组 – 配置 Amazon EC2 安全组以允许端口 80 上的入站流量。利用此资源,HTTP 流量可从 Internet 到达负载均衡器。默认情况下,其他端口不允许流量进入。

  • Auto Scaling 组 – 配置来在实例终止或不可用时替换实例的 Auto Scaling 组。

  • Amazon S3 存储桶 – 使用 Elastic Beanstalk 时创建的源代码、日志和其他项目的存储位置。

  • Amazon CloudWatch 警报 – 用于监控环境中的实例负载的两个 CloudWatch 警报,在负载过高或过低时触发。警报触发后,您的 Auto Scaling 组会扩展或收缩进行响应。

  • AWS CloudFormation 堆栈 – Elastic Beanstalk 使用 AWS CloudFormation 启动您的环境中的资源并传播配置更改。这些资源在您可通过 AWS CloudFormation 控制台查看的模板中定义。

  • 域名 – 一个域名,它以下面的形式路由到您的 Web 应用程序:subdomain.region.elasticbeanstalk.com

所有这些资源均由 Elastic Beanstalk 管理。当您终止环境时,Elastic Beanstalk 会终止其包含的所有资源。

注意

Elastic Beanstalk 创建的 Amazon S3 存储桶将在多个环境之间共享并且在环境终止期间不会被删除。有关更多信息,请参阅 将 Elastic Beanstalk 用于 Amazon S3。

当环境创建过程完成时,请使用 eb open 打开网站:

~/eb-flask$ eb open

这将使用为应用程序创建的域名打开一个浏览器窗口。您应该看到在本地创建和测试的相同 Flask 网站。

如果您没有看到应用程序运行,或者出现错误消息,请查看排查部署问题以获取有关如何确定错误原因的帮助。

如果您确实 看到应用程序在运行,那么恭喜,您已使用 Elastic Beanstalk 部署了第一个 Flask 应用程序!

清除

Elastic Beanstalk 使用完毕时,您可以终止您的环境。Elastic Beanstalk 会终止与环境关联的所有 AWS 资源,例如 Amazon EC2 实例、数据库实例、负载均衡器、安全组和警报。

终止 Elastic Beanstalk 环境

  1. 打开 Elastic Beanstalk 控制台。

  2. 导航到您的环境的管理页。

  3. 选择 Actions (操作),然后选择 Terminate Environment (终止环境)

  4. 在 Confirm Termination (确认终止) 对话框中,输入环境名称,然后选择 Terminate (终止)

利用 Elastic Beanstalk,可以随时为您的应用程序轻松创建新环境。

或者,使用 EB CLI:

~/eb-flask$ eb terminate flask-env

后续步骤

有关 Flask 的更多信息,请访问 flask.pocoo.org。

如果您希望尝试其他 Python Web 框架,请浏览向 Elastic Beanstalk 部署 Django 应用程序。

转:https://www.cnblogs.com/cloudrivers/p/11536870.html



推荐阅读
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • RedHat 系统下配置国内 YUM 源以替代官方收费源的方法
    本文详细介绍如何在 RedHat Linux 中安装并配置 YUM 包管理器,并通过使用国内镜像源来解决因未购买官方服务而导致的更新源限制问题。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • Windows 环境下安装 Git 并连接 GitHub 的详细步骤
    本文详细介绍了如何在 Windows 系统中安装 Git 工具,并通过配置 SSH 密钥实现与 GitHub 的安全连接。包括下载、安装、环境配置及验证连接等关键步骤。 ... [详细]
  • 探讨HTML中的DIV样式难题
    本文深入分析了HTML中常见的DIV样式问题,并提供了有效的解决策略。适合所有对Web前端开发感兴趣的读者。 ... [详细]
  • 本文详细介绍了 Python 中的 with 语句及其背后的上下文管理器机制,从基本概念入手,通过具体示例和原理分析,帮助读者深入理解这一重要的资源管理工具。 ... [详细]
  • 详细指南:使用IntelliJ IDEA构建多模块Maven项目
    本文在前两篇文章的基础上,进一步指导读者如何在IntelliJ IDEA中创建和配置多模块Maven项目。通过详细的步骤说明,帮助读者掌握项目模块化管理的方法。 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 本文探讨了在当前开发环境中使用Django 1.5和Python 3.3的情况下,如何解决AWS和GAE仅支持Python 2.7的问题,并提供了相应的解决方案。 ... [详细]
author-avatar
伍贤厚_197
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有