arrow_back

Google Cloud 基础知识:Cloud Storage 和 Cloud SQL 使用入门

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

Google Cloud 基础知识:Cloud Storage 和 Cloud SQL 使用入门

实验 1 小时 15 分钟 universal_currency_alt 5 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

概览

在本实验中,您将创建一个 Cloud Storage 存储桶并将一张图片保存在该存储桶中。您还需要将一个在 Compute Engine 中运行的应用配置为使用 Cloud SQL 托管的数据库。在本实验中,您将使用 PHP 配置一个 Web 服务器,PHP 是一个 Web 开发环境,许多热门的博客软件都是使用 PHP 进行开发的。在本实验之外,您也可以使用其他类似的技术来配置这些软件包。

此外,您还需要将该 Web 服务器配置为引用 Cloud Storage 存储桶中的这张图片。

目标

在本实验中,您将学习如何执行以下任务:

  • 创建一个 Cloud Storage 存储桶并将一张图片保存在该存储桶中。
  • 创建一个 Cloud SQL 实例并对其进行配置。
  • 从一个 Web 服务器连接到该 Cloud SQL 实例。
  • 在网页上使用 Cloud Storage 存储桶中的这张图片。

任务 1. 登录 Google Cloud 控制台

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单导航菜单图标

任务 2. 部署一个 Web 服务器虚拟机实例

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击 Compute Engine > 虚拟机实例

  2. 点击创建实例

  3. 创建实例页面上的名称部分,输入 bloghost

  4. 区域可用区部分,选择 Qwiklabs 分配的区域和可用区。

  5. 机器类型部分,接受默认设置。

  6. 启动磁盘部分,如果显示的映像不是 Debian GNU/Linux 12,请点击更改,然后选择 Debian GNU/Linux 11 (bullseye)

  7. 保留身份和 API 访问权限的默认设置不变。

  8. 防火墙部分,点击允许 HTTP 流量

  9. 点击高级选项,打开对话框的该部分。

  10. 点击管理,打开对话框的该部分。

  11. 向下滚动到“自动化”部分,输入下面的代码作为启动脚本的值:

apt-get update apt-get install apache2 php php-mysql -y service apache2 restart 注意:请务必将上面的代码填入启动脚本字段。如果您不小心将其填入其他字段,那么这些代码不会在虚拟机实例启动时执行。
  1. 将其他设置保留默认值,然后点击创建
注意:实例可能需要大约两分钟时间才能启动并完全就绪。
  1. 虚拟机实例页面上,将 bloghost 虚拟机实例的内部和外部 IP 地址复制到一个文本编辑器中,以备本实验后面部分使用。

点击“检查我的进度”以验证是否完成了以下目标: 部署一个 Web 服务器虚拟机实例

任务 3. 使用 gcloud storage 命令行创建 Cloud Storage 存储桶

所有 Cloud Storage 存储桶的名称都必须是全局唯一的。为了确保存储桶名称的唯一性,本实验会指导您将 Google Cloud 项目 ID 指定为存储桶名称,因为该 ID 也是全局唯一的。

Cloud Storage 存储桶可以与一个单区域或多区域位置相关联:USEUASIA。在本活动中,您需要将存储桶与一个多区域位置相关联,该多区域位置应是与 Qwiklabs 或您的讲师为您分配的区域和可用区距离最近的那个多区域位置。

  1. Google Cloud 控制台右上角的工具栏中,点击激活 Cloud Shell “激活 Cloud Shell”图标。如果出现对话框,点击继续

  2. 为方便起见,请将所选位置输入到一个名为 LOCATION 的环境变量中。输入以下命令中的一个:

export LOCATION=US

export LOCATION=EU

export LOCATION=ASIA
  1. 在 Cloud Shell 中,DEVSHELL_PROJECT_ID 环境变量包含您的项目 ID。输入下面的命令,以根据该项目 ID 为您的存储桶命名:
gcloud storage buckets create -l $LOCATION gs://$DEVSHELL_PROJECT_ID

如果出现提示,点击授权继续。

  1. 从可公开访问的 Cloud Storage 位置获取一张横幅图片:
gcloud storage cp gs://cloud-training/gcpfci/my-excellent-blog.png my-excellent-blog.png
  1. 将该横幅图片复制到您新创建的 Cloud Storage 存储桶:
gcloud storage cp my-excellent-blog.png gs://$DEVSHELL_PROJECT_ID/my-excellent-blog.png
  1. 修改您刚刚创建的对象的访问控制列表,以便所有人都可以读取该对象:
gsutil acl ch -u allUsers:R gs://$DEVSHELL_PROJECT_ID/my-excellent-blog.png

点击“检查我的进度”以验证是否完成了以下目标: 使用 gcloud storage 命令行创建 Cloud Storage 存储桶

任务 4. 创建 Cloud SQL 实例

  1. 在 Google Cloud 控制台的导航菜单“导航菜单”图标)中,点击 SQL

  2. 点击创建实例

  3. 选择数据库引擎部分,选取选择 MySQL

  4. 选择 Cloud SQL 版本部分,点击企业版,然后从下拉列表中选择沙盒

  5. 实例 ID 部分,输入 blog-db;在 root 密码部分,输入您自行设置的密码。

注意:请设置一个您能够记住的密码。没有必要遮盖密码,因为后续连接使用的机制不会对所有人开放。
  1. 选择单个可用区,然后设置 Qwiklabs 分配的区域和可用区。
注意:这也是您会在其中启动 bloghost 实例的区域和可用区。您可以将客户端和数据库放在彼此邻近的位置,以提高性能。
  1. 点击创建实例
注意:请等待实例部署完毕,这可能需要几分钟时间。
  1. 点击实例的名称 blog-db,以打开详情页面。

  2. 在 SQL 实例详情页面上,将您的 SQL 实例的公共 IP 地址复制到一个文本编辑器中,以备本实验后面部分使用。

  3. 点击左侧的用户菜单,然后点击添加用户账号

  4. 用户名部分,输入 blogdbuser

  5. 密码部分,输入您自行设置的密码。记下该密码。

  6. 点击添加,将该用户账号添加到数据库中。

注意:请等待该用户创建完毕。
  1. 点击左侧的连接菜单,然后点击网络标签页。

  2. 点击添加网络

注意:如果系统提示您选择要使用专用 IP 连接还是公共 IP 连接,对于本实验,请选择公共 IP 注意:如果用户账号尚未创建完毕,添加网络按钮可能无法使用。
  1. 名称部分,输入 web front end

  2. 网络部分,输入您的 bloghost 虚拟机实例的外部 IP 地址,后跟 /32

结果应如下所示:

35.192.208.2/32 注意:请务必使用虚拟机实例的外部 IP 地址且后跟 /32。请勿使用虚拟机实例的内部 IP 地址。此外,请勿使用这里显示的示例 IP 地址。
  1. 点击完成,即可完成授权网络的定义。

  2. 点击保存,以保存配置更改。

注意:如果出现类似另一项操作正在进行中的消息,请等待几分钟,blog-db 显示绿色对勾标记之后,才能保存配置。

点击“检查我的进度”以验证是否完成了以下目标: 创建 Cloud SQL 实例

任务 5. 将 Compute Engine 实例中的一个应用配置为使用 Cloud SQL

  1. 导航菜单 (“导航菜单”图标) 中,点击 Compute Engine > 虚拟机实例

  2. 在虚拟机实例列表中,找到您的虚拟机实例 bloghost 所在的行,然后点击 SSH

  3. bloghost 的 SSH 会话中,将您的工作目录更改为 Web 服务器的文档根目录:

cd /var/www/html
  1. 使用 nano 文本编辑器编辑名为 index.php 的文件:
sudo nano index.php
  1. 将下面的内容粘贴到该文件中:
<html> <head><title>Welcome to my excellent blog</title></head> <body> <h1>Welcome to my excellent blog</h1> <?php $dbserver = "CLOUDSQLIP"; $dbuser = "blogdbuser"; $dbpassword = "DBPASSWORD"; // 在生产性质的博客中,我们不会在文档根目录 // 存储 MySQL 密码。而是会将这种密码 // 存储到 Secret Manger 中。如需了解详情,请访问 // https://cloud.google.com/sql/docs/postgres/use-secret-manager try { $conn = new PDO("mysql:host=$dbserver;dbname=mysql", $dbuser, $dbpassword); // 将 PDO 错误模式设为异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Database connection failed:: " . $e->getMessage(); } ?> </body></html> 注意:在后面的步骤中,您会将您的 Cloud SQL 实例的 IP 地址和数据库密码插入到该文件中。目前,不要修改该文件。
  1. Ctrl+O 组合键,然后按 Enter 键,保存编辑好的文件。

  2. Ctrl+X 组合键,退出 nano 文本编辑器。

  3. 重启 Web 服务器:

sudo service apache2 restart
  1. 在网络浏览器中打开一个新标签页,将您的 bloghost 虚拟机实例的外部 IP 地址(后跟 /index.php)粘贴到地址栏中。该网址应如下所示:
35.192.208.2/index.php 注意:请务必使用虚拟机实例的外部 IP 地址且后跟 /index.php。请勿使用虚拟机实例的内部 IP 地址。此外,请勿使用这里显示的示例 IP 地址。

加载页面时,您会看到页面内容包含一则错误消息,该消息的开头部分如下所示:

Database connection failed: ... 注意:之所以出现此消息,是因为您尚未配置 PHP 与您的 Cloud SQL 实例之间的连接。
  1. 返回到 bloghost 的 SSH 会话。再次使用 nano 文本编辑器编辑 index.php
sudo nano index.php
  1. nano 文本编辑器中,将 CLOUDSQLIP 替换为您在前面部分记下的 Cloud SQL 实例公共 IP 地址。请勿改动值两旁的引号。

  2. nano 文本编辑器中,将 DBPASSWORD 替换为您在前面部分定义的 Cloud SQL 数据库密码。请勿改动值两旁的引号。

  3. Ctrl+O 组合键,然后按 Enter 键,保存编辑好的文件。

  4. Ctrl+X 组合键,退出 nano 文本编辑器。

  5. 重启 Web 服务器:

sudo service apache2 restart
  1. 在网络浏览器中,返回到 bloghost 虚拟机实例的外部 IP 地址对应的标签页。加载页面时,会出现下面的消息:
Database connection succeeded. 注意:在真实博客中,博客访问者看不到数据库连接状态;只有管理员能够管理数据库连接。

任务 6. 将 Compute Engine 实例中的一个应用配置为使用 Cloud Storage 对象

  1. 在 Google Cloud 控制台中,点击 Cloud Storage > 存储桶

  2. 点击根据您的 Google Cloud 项目命名的存储桶。

  3. 该存储桶中有一个名为 my-excellent-blog.png 的对象。将鼠标悬停在该对象的公共访问权限列中显示的链接图标上(如果显示的是“Public link”[公共链接] 文字标识,则将鼠标悬停在该标识上),这时会出现相应网址,复制该网址。

注意:如果既没有显示链接图标,也没有“Public link”(公共链接)文字标识,请尝试刷新浏览器。如果刷新之后仍看不到链接图标,请返回到 Cloud Shell,确认您前面是否已成功使用 gsutil acl ch 命令更改该对象的访问控制列表。
  1. 返回到 bloghost 虚拟机实例的 SSH 会话。

  2. 输入下面的命令,将您的工作目录设置为 Web 服务器的文档根目录:

cd /var/www/html
  1. 使用 nano 文本编辑器编辑 index.php
sudo nano index.php
  1. 使用箭头键将光标移至 h1 元素所在的行。按 Enter 键,在当前屏幕位置打开一个新的空白行,然后将前面复制的网址粘贴到该行中。

  2. 将下面的 HTML 标记粘贴到该网址的开头:

<img src='
  1. 在该网址的末尾添加相应的右单引号和右尖括号:
'>

编辑好后,该行应如下所示:

<img src='https://storage.googleapis.com/qwiklabs-gcp-0005e186fa559a09/my-excellent-blog.png'>

上面的步骤是为了将 <img src='...'> 所在的行放在 <h1>...</h1> 所在的行的正上方

注意:请勿复制这里显示的网址;您应复制自己的 Cloud Platform 项目的 Storage 浏览器所显示的网址。
  1. Ctrl+O 组合键,然后按 Enter 键,保存编辑好的文件。

  2. Ctrl+X 组合键,退出 nano 文本编辑器。

  3. 重启 Web 服务器:

sudo service apache2 restart
  1. 在网络浏览器中,返回到 bloghost 虚拟机实例的外部 IP 地址对应的标签页。加载页面时,页面内容现在会包含一张横幅图片。

恭喜!

在本实验中,您配置了一个 Cloud SQL 实例并将 Compute Engine 实例中的一个应用连接到了该实例。您还用到了一个 Cloud Storage 存储桶。

结束实验

完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。

系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交

星级数的含义如下:

  • 1 颗星 = 非常不满意
  • 2 颗星 = 不满意
  • 3 颗星 = 一般
  • 4 颗星 = 满意
  • 5 颗星 = 非常满意

如果您不想提供反馈,可以关闭该对话框。

如果要留言反馈、提出建议或做出更正,请使用支持标签页。

版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

其他资源

请参阅有关 Cloud SQL 的 Google Cloud Platform 文档

请参阅有关 Cloud Storage 的 Google Cloud Platform 文档

827b33e18db55754.png

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您