如何在Python中创建生产级Web应用程序的教程(一)
off999 2024-11-08 12:53 15 浏览 0 评论
我使用Python编写代码已有很多年了,但仅在上个月,我才几乎单枪匹马地编写了生产级Web应用程序。 天哪,那真的太辛苦了,我花了大量时间在互联网上研究文章和文档。因此,我决定将自己的经验写下来,希望能帮到你。
如何将Python Flask应用程序部署到AWS Elastic Beanstalk
欢迎来到系列文章的第一部分,我将指导您完成使用Python创建现代Web应用程序并使用Elastic Beanstalk将其部署到云中的步骤。 到本文结尾,您将在Internet上获得一个“ Hello World”应用程序。
先决条件
- 基本的Python知识。
如果您想用Python创建互联网上其他人可以使用的应用程序,则会发现本系列很有趣。 实际上,这并不像看起来那样琐碎。 您需要做很多事情。 如果您从未部署过生产级的Web应用程序,强烈建议您从本文开始,以连续的顺序阅读本系列文章。 如果您是一位经验丰富的工程师,请随时查看目录并跳至最感兴趣的章节。
该系列的所有帖子
第1部分:如何将Python Flask应用程序部署到AWS Elastic Beanstalk。
第2部分:使用Github Actions自动部署到AWS Elastic Beanstalk。
第3部分:带有Terraform的代码中的AWS Elastic Beanstalk基础架构。
基本Flask 应用
在我们的应用程序可以在Internet上使用之前,请确保我们在本地工作。 出于本文的目的,我们将需要一个简单的Web应用程序,而用Python制作的最简单方法是Flask。 如果您尚未安装Flask,请首先按照Flask文档中的说明进行安装。
就本教程而言,我们实际上并不需要花哨的应用程序,只需一个简单的“ Hello World”即可。 我们只复制并粘贴一个最小的Flask应用程序代码。 让我们创建一个文件application.py,并将以下代码放入其中:
from flask import Flask
application = Flask(__name__)
@application.route('/')
def hello_world():
return 'Hello, World!'
重要!
请注意,Flask对象的实例称为“ application”,而不是Flask文档中的“ app”。 这实际上对于本文的下一步很重要。 AWS Elastic Beanstalk的默认设置是针对名为application的变量查找名为application.py的文件。 如果需要,你可以之后再回过头来看看这个情况。
现在,您需要在终端中运行以下命令:
export FLASK_APP=application.py && flask run
要检查其是否有效,请在浏览器中打开URL http://127.0.0.1:5000/ 。 您应该看到以下内容:
That’s not the next big thing in the web applications world, but this is enough for us at the moment. Let’s deploy it somewhere, so it’s not just on our local machine.
AWS Elastic Beanstalk
有数百种不同的服务来托管您的应用程序。 出于以下原因,AWS Elastic Beanstalk是不错的选择:
- AWS基础设施拥有世界上所有的东西。 您可能会花费一生来学习他们的所有服务。 在开发应用程序时,您可能在不同的时间有不同的需求,而且AWS已经很可能满足它们。
- 易于上手。 我将在本教程结束时对此进行证明。
- 可扩展 ,我们将进一步介绍可伸缩性。
在AWS中设置帐户
首先,让我们在AWS中创建一个帐户。 您可以在这里-> https://aws.amazon.com/free/。 如果您已经在AWS中拥有一个帐户,那就太好了,可以使用它。
重要!
如果您不熟悉AWS,则可以在第一年访问免费级的帐户。 但是您需要输入您的信用卡信息来创建一个帐户。 在本教程中,我们将主要使用免费资源。 但是,我不能保证在您阅读本文时,AWS的定价策略是相同的。 请注意AWS中的设置,并注意启用的服务。
创建您的第一个Elastic Beanstalk应用程序
现在,让我们登录AWS控制台-> https://aws.amazon.com/console/。在屏幕的左上角,单击“Services”,在搜索栏中键入“ Elastic Beanstalk”,然后单击第一个结果。
现在,单击“Create Application.”。
您应该会看到一个application的基本设置的页面。我们只需要选择一个应用程序名称并选择一个平台。在最后一部分“Application code”中,我们选择“Upload your code”选项。
剩下的唯一事情就是上传我们的python代码。因此,我们现在将手动进行此操作,但是在本系列的后续部分,您将了解如何使用部署管道自动化进行部署(automate your deployment pipeline)。现在,让我们转到python代码并创建一个zip存档。
让我们上传文件,然后点击“Create Application.”。
现在我们坐下来观看Elastic Beanstalk发挥其魔力。它将配置服务器并在后台为我们创建大量东西。
在应用程序名称下有一个链接。您应该会看到“ Hello World”消息。恭喜,您已经使用AWS Elastic Beanstalk成功地在互联网上提供了Python应用程序。
相关推荐
- python import 出现 ModuleNotFoundError 解决方法
-
错误的原因是你的Python环境没有正确安装库文件。本文以Scapy为例,给出详细方案:1.确认是否成功安装Scapy运行以下命令检查Scapy是否已安装:pip3list|gre...
- Github 7.4k star,一个强大的 Python 库-sh!
-
大家好,今天为大家分享一个强大的Python库-sh。Github地址:https://github.com/amoffat/shsh库是Python生态系统中一个专门用于执行系统命令的第三方...
- 学习编程第148天 python编程循环的嵌套使用
-
今天学习的是刘金玉老师零基础Python教程第32期,主要内容是python编程循环的嵌套使用。(一)一维数组及输出#一维数组list1=["110001","四川二流子...
- 2025-07-09:使数组元素互不相同所需的最少操作次数。用go语言,
-
2025-07-09:使数组元素互不相同所需的最少操作次数。用go语言,给定一个整数数组nums和一个整数k,对于数组中的每个元素,你最多可以对其进行一次操作:将一个在区间[-k,k]内的...
- python数据分析numpy基础之max求数组最大值
-
1python数据分析numpy基础之max求数组最大值python的numpy库的max()函数,用于计算沿指定轴(一个轴或多个轴)的最大值。用法numpy.max(a,axis=None,...
- 加快Python算法的四个方法(四)Dask
-
CDA数据分析师出品相信大家在做一些算法经常会被庞大的数据量所造成的超多计算量需要的时间而折磨的痛苦不已,接下来我们围绕四个方法来帮助大家加快一下Python的计算时间,减少大家在算法上的等待时间。...
- 六十六、Leetcode数组系列(中篇)(leetcode679)
-
@Author:Runsen@Date:2020/6/8人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难...
- Numpy中的ndarray是什么?('numpy.ndarray' object has no attribute 'append')
-
1.创建ndarray创建数组最简单的办法就是使用array函数。它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组。np.array会尝试为新建的这个数组推断出一个...
- Python中的数据导入与查询(python怎样导入数据库)
-
适用场景:快速导入文本/Excel数据→Pandas读取大型数值数据→Numpy处理复杂二进制文件→h5py/scipy.io数据库交互→SQLAlchemy+Pandas一、数据...
- 2025-07-02:统计数组中的美丽分割。用go语言,给定一个整数数组
-
2025-07-02:统计数组中的美丽分割。用go语言,给定一个整数数组nums,我们要把它划分成三个连续且非空的子数组nums1、nums2、nums3,且这三个子数组按顺序拼接后还原为原数组...
- 2025-07-10:字符相同的最短子字符串Ⅰ。用go语言,给定一个长度
-
2025-07-10:字符相同的最短子字符串Ⅰ。用go语言,给定一个长度为n的二进制字符串s和一个允许执行的最大操作次数numOps。每次操作可以选择字符串中的任意一个位置i(0≤i...
- 2025-06-19:识别数组中的最大异常值。用go语言,你有一个长度为
-
2025-06-19:识别数组中的最大异常值。用go语言,你有一个长度为n的整数数组nums,其中恰好有n-2个元素属于“特殊数字”类别。剩下的两个元素中,一个等于所有这些特殊数字的总和,另...
- 2025-06-28:长度可被 K 整除的子数组的最大元素和。用go语言,给
-
2025-06-28:长度可被K整除的子数组的最大元素和。用go语言,给定一个整数数组nums和一个整数k,求nums中长度为k的倍数的非空子数组中,子数组和的最大值。返回该最大和...
- 在 Python 中如何向一个已排序的数组(列表) 中插入一个数呢
-
在Python中如何向一个已排序的数组(列表)中插入一个数呢?方法有很多种,关键在于原来数组是什么样的排序,用到啥排序方法效率高,就用哪种。我们来练习其中的几种插入方法,另外也掌握下遍历数组的...
- 2025-07-04:统计符合条件长度为 3 的子数组数目。用go语言,给定
-
2025-07-04:统计符合条件长度为3的子数组数目。用go语言,给定一个整数数组nums,请你计算有多少个长度恰好为3的连续子数组满足这样的条件:子数组的第一个元素与第三个元素的和,正好...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- python import 出现 ModuleNotFoundError 解决方法
- Github 7.4k star,一个强大的 Python 库-sh!
- 学习编程第148天 python编程循环的嵌套使用
- 2025-07-09:使数组元素互不相同所需的最少操作次数。用go语言,
- python数据分析numpy基础之max求数组最大值
- 加快Python算法的四个方法(四)Dask
- 六十六、Leetcode数组系列(中篇)(leetcode679)
- Numpy中的ndarray是什么?('numpy.ndarray' object has no attribute 'append')
- Python中的数据导入与查询(python怎样导入数据库)
- 2025-07-02:统计数组中的美丽分割。用go语言,给定一个整数数组
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)