在 App Engine 柔性环境中运行的 Django 应用会根据流量动态扩缩。
本教程假定您熟悉 Django 网络开发。如果您刚开始接触 Django 开发,最好先查看编写您的第一个 Django 应用,然后再继续操作。
本教程专门演示 Django,但您可以将此部署过程与其他基于 Django 的框架(例如 Wagtail 和 Django CMS)搭配使用。
本教程使用 Django 6,它至少需要 Python 3.12。我们强烈建议您使用此系列中的最新版本。App Engine 柔性环境支持最高 Python 3.14。
目标
在此教程中,您将学习以下操作:
- 创建并连接 Cloud SQL 数据库。
- 创建和使用 Secret Manager Secret 值。
将 Django 应用部署到 App Engine 柔性环境。
在 Cloud Storage 上托管静态文件。
费用
在本文档中,您将使用 Google Cloud的以下收费组件:
如需根据您的预计使用情况来估算费用,请使用价格计算器。
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud SQL Admin API, Secret Manager, and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init - 初始化 App Engine 并选择您的首选区域(如果您尚未执行此操作):
gcloud app create
准备环境
克隆示例应用
Django 示例应用的代码位于 GitHub 上的 GoogleCloudPlatform/python-docs-samples 代码库中。
您可以下载该示例的 ZIP 文件并将其解压缩,也可以将代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git转到包含示例代码的目录:
Linux/macOS
cd python-docs-samples/appengine/flexible/django_cloudsqlWindows
cd python-docs-samples\appengine\flexible\django_cloudsql
确认 Python 设置
本教程依赖 Python 在您的机器上运行示例应用。示例代码还需要安装依赖项。
如需了解详情,请参阅 Python 开发环境指南。
确认您的 Python 版本至少为 3.14。
python -V您应该会看到
Python 3.14.0或更高版本。创建 Python 虚拟环境并安装依赖项:
Linux/macOS
python -m venv venv source venv/bin/activate pip install --upgrade pip pip install -r requirements.txtWindows
python -m venv venv venv\scripts\activate pip install --upgrade pip pip install -r requirements.txt
下载 Cloud SQL Auth 代理以从本地机器连接到 Cloud SQL
部署后,您的应用会使用 App Engine 柔性环境中内置的 Cloud SQL Auth 代理与 Cloud SQL 实例进行通信。但要在本地测试应用,您必须在开发环境中安装和使用该代理的本地副本。 如需了解详情,请参阅 Cloud SQL Auth 代理指南。
Cloud SQL Auth 代理使用 Cloud SQL API 与 SQL 实例进行交互。为此,它需要通过 gcloud CLI 进行应用身份验证。
对 API 进行身份验证并获取凭据:
gcloud auth application-default login将 Cloud SQL Auth 代理下载并安装到本地机器上。
在开始之前,您必须确定机器的架构。
如果是在 Linux 或 Mac 上运行,您可以通过运行以下命令来查找此文件:
uname -a
Linux 64 位
- 下载 Cloud SQL Auth 代理:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.25.4/cloud-sql-proxy.linux.amd64
- 使 Cloud SQL Auth 代理可执行:
chmod +x cloud-sql-proxy
Linux 32 位
- 下载 Cloud SQL Auth 代理:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.25.4/cloud-sql-proxy.linux.386
- 如果找不到
curl命令,请运行sudo apt install curl并重复执行下载命令。 - 使 Cloud SQL Auth 代理可执行:
chmod +x cloud-sql-proxy
macOS 64 位
- 下载 Cloud SQL Auth 代理:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.25.4/cloud-sql-proxy.darwin.amd64
- 使 Cloud SQL Auth 代理可执行:
chmod +x cloud-sql-proxy
Mac M1
- 下载 Cloud SQL Auth 代理:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.25.4/cloud-sql-proxy.darwin.arm64
- 使 Cloud SQL Auth 代理可执行:
chmod +x cloud-sql-proxy
Windows 64 位
右键点击 https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.25.4/cloud-sql-proxy.x64.exe,然后选择链接另存为以下载 Cloud SQL Auth 代理。将文件重命名为cloud-sql-proxy.exe。Windows 32 位
右键点击 https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.25.4/cloud-sql-proxy.x86.exe,然后选择链接另存为以下载 Cloud SQL Auth 代理。将文件重命名为cloud-sql-proxy.exe。Cloud SQL Auth 代理 Docker 映像
Cloud SQL Auth 代理有不同的容器映像,例如
distroless、alpine和buster。默认的 Cloud SQL Auth 代理容器映像使用不包含 shell 的distroless。如果您需要 shell 或相关工具,请下载基于alpine或buster的映像。如需了解详情,请参阅 Cloud SQL Auth 代理容器映像。您可以通过 Docker 使用以下命令将最新映像拉取到本地机器:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.25.4
其他操作系统
对于此处未列出的其他操作系统,您可以通过源代码编译 Cloud SQL Auth 代理。您可以选择将下载的文件移到其他位置,例如
PATH上的某个位置或主目录。如果您选择这样做,则在本教程的后面部分启动 Cloud SQL Auth 代理时,请务必在使用cloud-sql-proxy命令时引用您选择的位置。- 下载 Cloud SQL Auth 代理:
创建支持性服务
本教程使用多种 Google Cloud 服务来提供支持已部署 Django 项目的数据库、媒体存储和 Secret 存储。这些服务部署在特定区域。为了提高服务之间的效率,所有服务都应部署在同一区域中。如需详细了解离您最近的区域,请参阅各区域可使用的产品。
设置 Cloud SQL for PostgreSQL 实例
Django 官方支持多个关系型数据库,但为 PostgreSQL 提供了最全面的支持。Cloud SQL 支持 PostgreSQL,因此本教程选择使用此类型的数据库。
以下部分介绍了如何为应用创建 PostgreSQL 实例、数据库和数据库用户。
创建 PostgreSQL 实例:
控制台
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
点击创建实例。
点击选择 PostgreSQL。
对于 SQL 版本,选择“企业版”。
对于版本预设,选择“沙盒”。
在实例 ID 字段中,输入
INSTANCE_NAME。为 postgres 用户输入密码。
对于其他字段,请保留默认值。
点击创建实例。
实例需要几分钟才能准备就绪,可供使用。
gcloud
创建 PostgreSQL 实例:
gcloud sql instances