在 App Engine 柔性环境中创建 Python 应用
区域 ID
REGION_ID
是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r
包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。
详细了解区域 ID。
本快速入门演示了如何创建和部署一个显示简短消息的应用。您可以通过在 app.yaml
文件中指定运行时版本和操作系统,将本快速入门中的示例应用用于任何受支持的 Python 版本。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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 项目,以停止对该项目中使用的所有资源计费。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
后续步骤
了解整个平台
现在,您已了解如何开发和部署 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 部署应用时安装的库。