GSP068
概览
借助 App Engine,开发者可以集中精力做他们最擅长的事:写代码。App Engine 标准环境基于在 Google 基础设施上运行的容器实例。容器预先配置了几种可用运行时之一(Java、Python、Go 和 PHP)。每种运行时还包含支持 App Engine 标准环境 API 的库。对许多应用来说,标准环境运行时和库可能已经足以满足需求。
借助 App Engine 标准环境,您可以轻松构建和部署应用,并保证即便在负载繁重、数据量庞大时,应用也能可靠运行。它包括以下功能:
- 永久性存储空间;支持查询、排序和事务。
- 自动扩缩和负载均衡。
- 用于执行请求范围之外的工作的异步任务队列。
- 用于在指定时间或按固定时间间隔触发事件的计划任务。
- 与其他 Google Cloud 服务和 API 集成。
应用在安全的沙盒环境中运行,这使得 App Engine 标准环境能够跨多个服务器分发请求,并能根据流量需求扩缩服务器。您的应用在专属的安全可靠环境中运行,该环境独立于服务器硬件、操作系统或物理位置存在。
本实操实验将向您介绍如何创建显示简短消息的小型 App Engine 应用。
目标
在本实验中,您将学习如何完成以下操作:
- 从 GitHub 代码库下载起始代码。
- 使用 Google App Engine 部署应用。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。右侧是实验设置和访问权限面板,其中包含以下内容:
-
打开 Google Cloud 控制台按钮
- 您在本实验中必须使用的临时凭证(用户名和密码)
- 帮助您逐步完成该实验所需的其他信息(如果需要)
请注意,实验计时器位于页面顶部附近,将显示剩余时间。
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:可以将这些标签页分别放在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在实验设置和访问权限面板中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在实验设置和访问权限面板中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
依次点击进入后续页面:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重身份验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 下载示例 HTTP Server 应用
我们创建了一个用 Java 编写的简单 HTTP Server 应用,以便您快速了解如何在 Google Cloud 上部署应用。请按照以下步骤下载 HTTP Server 示例代码。
-
点击 Cloud 控制台右上角的激活 Cloud Shell 按钮,打开一个新的 Cloud Shell 会话。
-
在新的 Cloud Shell 终端中,运行以下命令,将文件从 Google Cloud Storage 复制到本地目录:
gcloud storage cp -r gs://spls/gsp068/appengine-java21/appengine-java21/* .
输出:
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/http-server/src/main/java/com/example/appengine/Main.java to file://./helloworld/http-server/src/main/java/com/example/appengine/Main.java
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/pom.xml to file://./helloworld/pom.xml
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/settings.gradle to file://./helloworld/settings.gradle
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/src/main/java/com/example/appengine/java21/HelloAppEngine.java to file://./helloworld/src/main/java/com/example/appengine/java21/HelloAppEngine.java
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/src/main/webapp/WEB-INF/appengine-web.xml to file://./helloworld/src/main/webapp/WEB-INF/appengine-web.xml
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/src/main/webapp/WEB-INF/web.xml to file://./helloworld/src/main/webapp/WEB-INF/web.xml
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/src/test/java/com/example/appengine/java21/HelloAppEngineTest.java to file://./helloworld/src/test/java/com/example/appengine/java21/HelloAppEngineTest.java
Completed files 20/20 | 54.2kiB/54.2kiB
Average throughput: 40.0kiB/s
- 接下来,前往包含示例代码的目录:
cd helloworld/http-server
在此文件夹中,您会找到 src 目录,其中包含一个名为 com.example.appengine 的软件包。此软件包包含 HTTP Server 应用的源代码。
源代码如下所示:
package com.example.appengine;
import com.sun.net.httpserver.HttpServer;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
public class Main {
public static void main(String[] args) throws IOException {
// Create an instance of HttpServer bound to port defined by the
// PORT environment variable when present, otherwise on 8080.
int port = Integer.parseInt(System.getenv().getOrDefault("PORT", "8080"));
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
// Set root URI path.
server.createContext("/", (var t) -> {
byte[] response = "Hello World!".getBytes();
t.sendResponseHeaders(200, response.length);
try (OutputStream os = t.getResponseBody()) {
os.write(response);
}
});
// Create a second URI path.
server.createContext("/foo", (var t) -> {
byte[] response = "Foo!".getBytes();
t.sendResponseHeaders(200, response.length);
try (OutputStream os = t.getResponseBody()) {
os.write(response);
}
});
server.start();
}
}
运作方式
此代码会在 Google App Engine 上创建一个基本 Web 服务器,该服务器会响应以下两个地址:
-
/:(主页面)显示“Hello World!”
-
/foo:(特殊页面)显示“Foo!”
-
导入:包括用于创建服务器和处理请求的工具。
-
主函数:在应用运行时启动应用。
-
服务器创建:
- 确定要使用的端口(来自 App Engine 或默认端口 8080)。
- 创建一个用于监听该端口的 Web 服务器。
-
请求处理:
- 设置了两条规则:
- 如果有人访问主页面 (
/),则显示“Hello World!”
- 如果有人访问
/foo,则显示“Foo!”
-
启动:服务器开始运行,准备响应 Web 请求。
App Engine 可为您处理服务器管理、扩缩和安全事务,从而简化 Web 应用开发。这是快速启动并运行简单 Web 应用的理想方式。
任务 2. 部署并查看应用
在此任务中,您需要将 HTTP Server 应用部署到 Google App Engine。
- 现在,您将使用以下命令在 App Engine 上创建一个应用:
gcloud app deploy
-
系统提示时,输入与 关联的数字选项。输入 y 以继续。
-
如需查看您的应用,请使用以下命令:
gcloud app browse
您应该很快会收到以下输出内容(您的网址会有所不同):
Did not detect your browser. Go to this link to view your app:
https://qwiklabs-gcp-00-3e8fa18ec9dc.uc.r.appspot.com
-
点击该链接即可在网络浏览器中查看已部署的应用。您应该会看到一个显示“Hello World!”的简单网页。
-
接下来,在地址栏中的网址末尾附加 /foo,然后按 Enter 键。您应该会看到一个显示“Foo!”的页面。
点击检查我的进度以验证是否完成了以下目标:
部署应用。
任务 3. 知识测验
参加测验,检验您对 Google Cloud Platform 知识的掌握情况。(必要时请选择多个正确选项。)
恭喜!
恭喜!在本实验中,您学习了如何将简单的 Java 应用部署到 Google App Engine。您还学习了如何在网络浏览器中查看已部署的应用。
后续步骤/了解详情
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册最后更新时间:2025 年 2 月 6 日
本实验最后测试时间:2025 年 2 月 6 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。