在 App Engine 柔性环境中创建 Python 应用
区域 ID
REGION_ID
是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r
包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。
详细了解区域 ID。
本快速入门演示了如何创建和部署一个显示简短消息的应用。示例应用使用最新版本的 Python 3。您可以通过在 app.yaml
文件中指定版本,为 Python 运行时 3.8 版及更高版本使用相同的代码示例。
GitHub 中提供了 Python 3.7 版及更低版本的代码示例。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
启用 Cloud Build API。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
启用 Cloud Build API。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
其他前提条件
初始化您的项目的 App Engine 应用并选择应用的区域:
gcloud app create --project=[YOUR_PROJECT_ID]
系统提示时,选择您希望自己的 App Engine 应用所在的区域。
安装以下必备组件:
运行以下命令,安装包含 App Engine Python 扩展程序的 gcloud 组件:
gcloud components install app-engine-python
准备 Python 开发环境。建议您在自己的系统中安装最新版本的 Python、
pip
和其他相关工具。如需了解相关说明,请参阅 Python 开发环境设置指南。
App Engine 位置
App Engine 是区域级的,这意味着运行您的应用的基础架构位于特定区域并由 Google 代管,以使其在该区域内的所有可用区以冗余方式提供。
选择要在哪个区域运行应用时,首先要考虑该区域是否能满足您的延迟时间、可用性或耐用性要求。通常,您可以选择距离应用的用户最近的地区,但也要考虑提供 App Engine 的位置以及应用使用的其他 Google Cloud 产品和服务的位置。跨多个位置使用服务可能会影响应用的延迟时间及其价格。
应用的区域一经设置,便无法更改。
如果您已创建 App Engine 应用,则可以通过执行以下任一操作来查看其区域:
运行
gcloud app describe
命令。打开 Google Cloud 控制台中的 App Engine 信息中心。该区域会显示在页面顶部附近。
下载 Hello World 应用
我们创建了一个简单的 App Engine 版 Hello World 应用,以便您快速了解如何将应用部署到 Google Cloud。
将 Hello World 示例应用代码库克隆到本地机器。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
或者,您也可以下载该示例的 zip 文件并将其解压缩。
切换到包含示例代码的目录。
cd python-docs-samples/appengine/flexible/hello_world
在本地机器上运行 Hello World
如需在本地计算机上运行 Hello World 应用,请执行以下操作:
Mac OS/Linux
- 创建一个独立的 Python 环境:
python3 -m venv env
source env/bin/activate
- 如果您当前不在包含示例代码的目录中,则导航到包含
hello_world
示例代码的目录。然后安装依赖项:cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
- 运行应用:
python main.py
- 在网络浏览器中,输入以下地址:
http://localhost:8080
如果您使用的是 Cloud Shell,请改为在工具栏中点击网页预览,然后选择在端口 8080 上预览。
Windows
使用 Powershell 运行 Python 包。
- 找到已安装的 Powershell。
- 右键点击 Powershell 的快捷方式,并以管理员身份启动。
- 创建一个独立的 Python 环境。
python -m venv env
.\env\Scripts\activate
- 导航到项目目录并安装依赖项。如果您当前不在包含示例代码的目录中,则导航到包含
hello_world
示例代码的目录。然后安装依赖项:cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
- 运行应用:
python main.py
- 在网络浏览器中,输入以下地址:
http://localhost:8080
页面中随即显示示例应用发出的 Hello World 消息。在终端窗口中,按 Ctrl+C 退出 Web 服务器。
在 App Engine 上部署并运行 Hello World
要将应用部署到 App Engine 柔性环境,请执行以下操作:-
从
hello_world
目录运行以下命令来部署 Hello World 应用:gcloud app deploy
了解可选标志。
常见的
gcloud
命令标志- 添加
--version
标志,可以指定用来唯一标识应用版本的 ID,否则系统会为您生成一个 ID。示例:--version [YOUR_VERSION_ID]
-
添加
--project
标志,可以为您在gcloud
工具中初始化为默认值的 Google Cloud 项目 ID 指定一个备用 Google Cloud 项目 ID。示例:--project [YOUR_PROJECT_ID]
例如:
gcloud app deploy --version pre-prod-5 --project my-sample-app
如需详细了解如何从命令行部署应用,请参阅测试和部署应用。如需查看所有命令标志的列表,请参阅
gcloud app deploy
参考。 - 添加
-
启动浏览器,然后访问
https://PROJECT_ID.REGION_ID.r.appspot.com
以查看此应用gcloud app browse
其中PROJECT_ID
表示您的 Google Cloud 项目 ID。
此时,在 App Engine 实例上运行的 Web 服务器提供显示 Hello World 消息的页面。
恭喜!您已将第一个 App Engine 应用部署到 App Engine 柔性环境!
如果您在部署应用时遇到任何错误,请查看问题排查提示。如需了解有关清理的信息以及可执行的后续步骤的链接,请参阅以下部分。
清理
为避免产生费用,您可以删除 Google Cloud 项目,以停止对该项目中使用的所有资源计费。
- 在 Google Cloud 控制台中,进入管理资源页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
后续步骤
了解整个平台
现在,您已了解如何开发和部署 App Engine 应用,接下来您可以探索 Google Cloud 的其余部分。您已经安装了 Google Cloud CLI,它可为您提供与 Cloud SQL、Cloud Storage、Firestore 等产品交互的工具。
了解 App Engine 柔性环境
以下主题有助于您继续了解 App Engine:
Hello World 代码审核
Hello World 是最简单的 App Engine 应用,因为它只包含一项服务,只有一个版本,并且所有代码都位于应用的根目录中。本部分会详细介绍每个应用文件。
main.py
Hello World 应用是一个基本的单文件式 Flask 应用。
app.yaml
app.yaml
文件描述了应用的以下配置:
- 设置
env: flex
,以指示您的应用使用 App Engine 柔性环境。 指定应用使用的运行时。如果您排除
runtime_version
设置,则 App Engine 会使用最新的 Python 版本作为应用的默认版本。entrypoint
用于告知 App Engine 如何启动应用。此应用使用gunicorn
来提供 Python 应用,以替代 Flask 的开发服务器(在本地运行时使用)。$PORT
变量由 App Engine 在启动应用时设置。如需详细了解entrypoint
,请参阅应用启动。
如需详细了解 Python 运行时的工作原理,请参阅 Python 运行时。
如需详细了解如何设计应用以利用多个版本和多项服务,请参阅 App Engine 概览。
如需详细了解 App Engine 的配置设置,请参阅使用 app.yaml 配置应用。
requirements.txt
requirements.txt
和 Python 软件包管理系统 pip
用于声明和安装应用依赖项。Hello World 应用需要使用 Web 框架 Flask 和 WSGI 服务器 Gunicorn。
requirements.txt
定义将在本地以及向 App Engine 部署应用时安装的库。