概览
在本实验中,您将设置一个游戏应用:Minecraft 服务器。
Minecraft 服务器软件将在 Compute Engine 实例上运行。
您使用的是 e2-medium 机器类型,它有一个 10 GB 的启动磁盘、2 个虚拟 CPU (vCPU) 和 4 GB RAM。此机器类型默认运行的是 Debian Linux。
为确保 Minecraft 服务器的游戏世界数据有充足的存储空间,您还为该实例挂接了一个高性能的 50 GB 永久性固态硬盘 (SSD)。这个专用的 Minecraft 服务器最多可支持 50 位玩家。
目标
在本实验中,您将学习如何执行以下任务:
- 自定义应用服务器
- 安装和配置必要的软件
- 配置网络访问权限
- 安排定期备份
设置和要求
对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
-
打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单,或在搜索字段中输入服务或产品的名称。
任务 1. 创建虚拟机
在此任务中,您将创建一个虚拟机来托管 Minecraft 服务器并安装软件。
使用高级选项定义虚拟机
- 在 Google Cloud 控制台的导航菜单 (
) 中,依次点击 Compute Engine > 虚拟机实例。
- 点击创建实例。
- 指定下列内容,将其他设置保留默认值:
属性 |
值(按照说明输入值或选择选项) |
名称 |
mc-server |
区域 |
|
可用区 |
|
-
点击操作系统和存储空间。
-
确保启动磁盘映像显示为 Debian GNU/Linux 12 (bookworm)。如果不是,请点击更改,从版本下拉列表中选择相应版本,然后点击选择。
-
点击添加新磁盘。
-
指定下列内容,将其他设置保留默认值:
属性 |
值(按照说明输入值或选择选项) |
名称 |
minecraft-disk |
磁盘来源类型 |
空白磁盘 |
磁盘设置 |
SSD 永久性磁盘 |
大小 (GB) |
50 |
加密 |
由 Google 管理的加密密钥 |
-
点击保存。这会创建磁盘,并在创建虚拟机时自动将其挂接到虚拟机。
-
点击网络。
-
指定下列内容,将其他设置保留默认值:
属性 |
值(按照说明输入值或选择选项) |
网络标记 |
minecraft-server |
网络接口 |
点击默认以修改接口 |
外部 IPv4 地址 |
预留静态外部 IP 地址 |
名称 |
mc-server-ip |
-
点击预留,然后点击完成。
-
点击安全。
-
指定下列内容,将其他设置保留默认值:
属性 |
值(按照说明输入值或选择选项) |
身份和 API 访问权限 > 访问权限范围 |
针对每个 API 设置访问权限 |
存储 |
读写 |
- 点击创建。
任务 2. 准备数据磁盘
在此任务中,您将格式化并装载 Minecraft 磁盘。
创建目录,格式化并装载磁盘
磁盘会挂接到实例,但尚未装载,也没有格式化。
- 对于 mc-server,点击 SSH 以打开终端并建立连接。
- 如需创建一个目录,并将其作为数据磁盘的装载点,请运行以下命令:
sudo mkdir -p /home/minecraft
- 如需格式化磁盘,请运行以下命令:
sudo mkfs.ext4 -F -E lazy_itable_init=0,\
lazy_journal_init=0,discard \
/dev/disk/by-id/google-minecraft-disk
结果(这是示例输出):
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 13107200 4k blocks and 3276800 inodes
Filesystem UUID: 3d5b0563-f29e-4107-ad1a-ba7bf11dcf7c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
- 如需装载磁盘,请运行以下命令:
sudo mount -o discard,defaults /dev/disk/by-id/google-minecraft-disk /home/minecraft
磁盘装载后不会显示任何输出信息。
点击“检查我的进度”以验证是否完成了以下目标:
创建虚拟机并准备数据磁盘
任务 3. 安装并运行应用
在此任务中,您将安装并运行 Minecraft 应用。Minecraft 服务器运行在 Java 虚拟机 (JVM) 之上,因此需要 Java 运行时环境 (JRE) 才能运行。服务器不需要图形界面,因此可使用 JRE 的无头版本。
这样能减少 JRE 占用的机器资源,有助于确保 Minecraft 服务器有充足的空间按需扩展资源用量。
安装 Java 运行时环境 (JRE) 和 Minecraft 服务器
- 在 mc-server 的 SSH 终端中运行如下命令,以更新虚拟机上的 Debian 代码库:
sudo apt-get update
- 完成代码库的更新后,如需安装无头 JRE,请运行以下命令:
sudo apt-get install -y default-jre-headless
- 如需导航到装载永久性磁盘的目录,请运行以下命令:
cd /home/minecraft
- 如需安装 wget,请运行以下命令:
sudo apt-get install wget
-
如果系统提示您继续,请输入 Y。
-
如需下载最新版 Minecraft 服务器 JAR 文件 (1.11.2 JAR),请运行以下命令:
sudo wget https://launcher.mojang.com/v1/objects/d0d0fe2b1dc6ab4c65554cb734270872b72dadd6/server.jar
初始化 Minecraft 服务器
- 如需初始化 Minecraft 服务器,请运行以下命令:
sudo java -Xmx1024M -Xms1024M -jar server.jar nogui
结果(输出示例):
[21:01:54] [main/ERROR]: Failed to load properties from file: server.properties
[21:01:54] [main/WARN]: Failed to load eula.txt
[21:01:54] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
注意:您需要接受最终用户许可协议 (EULA) 的条款,才能运行 Minecraft 服务器。
点击“检查我的进度”以验证是否完成了以下目标:
安装 Java 运行时环境 (JRE) 和 Minecraft 服务器
- 如需查看在首次初始化 Minecraft 服务器的过程中创建的文件,请运行以下命令:
sudo ls -l
注意:您可以修改 server.properties
文件,以更改 Minecraft 服务器的默认行为。
- 如需修改 EULA,请运行以下命令:
sudo nano eula.txt
- 将该文件的最后一行从
eula=false
更改为 eula=true
。
- 依次按 Ctrl+O、ENTER 键保存文件,然后按 Ctrl+X 退出 nano。
注意:现在请勿尝试重启 Minecraft 服务器。在接下来的过程中,您将使用另外一种不同的方法。
创建一个虚拟终端 screen 来启动 Minecraft 服务器
如果此时再次启动 Minecraft 服务器,它将与 SSH 会话的生命周期绑定:也就是说,在您关闭 SSH 终端时,服务器也会终止。为避免出现此问题,您可以使用 screen
应用来创建一个虚拟终端,该虚拟终端可以“分离”以作为后台进程运行,也可通过“重新附加”变为前台进程。当虚拟终端分离到后台时,无论您是否已登录系统,它都会保持运行状态。
- 如需安装
screen
,请运行以下命令:
sudo apt-get install -y screen
- 如需在
screen
虚拟终端内启动 Minecraft 服务器,请运行以下命令(使用 -S
标志为终端 mcs
命名):
sudo screen -S mcs java -Xmx1024M -Xms1024M -jar server.jar nogui
结果(输出示例):
...
[21:06:06] [Server-Worker-1/INFO]: Preparing spawn area: 83%
[21:06:07] [Server-Worker-1/INFO]: Preparing spawn area: 85%
[21:06:07] [Server-Worker-1/INFO]: Preparing spawn area: 86%
[21:06:08] [Server-Worker-1/INFO]: Preparing spawn area: 88%
[21:06:08] [Server-Worker-1/INFO]: Preparing spawn area: 89%
[21:06:09] [Server-Worker-1/INFO]: Preparing spawn area: 91%
[21:06:09] [Server-Worker-1/INFO]: Preparing spawn area: 93%
[21:06:10] [Server-Worker-1/INFO]: Preparing spawn area: 95%
[21:06:10] [Server-Worker-1/INFO]: Preparing spawn area: 98%
[21:06:11] [Server-Worker-1/INFO]: Preparing spawn area: 99%
[21:06:11] [Server thread/INFO]: Time elapsed: 55512 ms
[21:06:11] [Server thread/INFO]: Done (102.484s)! For help, type "help"
从 screen 分离并关闭 SSH 会话
- 如需分离 screen 终端,请按 Ctrl+A、Ctrl+D。该终端会继续在后台运行。如需重新附加终端,请运行以下命令:
sudo screen -r mcs
- 需要时按 Ctrl+A、Ctrl+D 退出 screen 终端。
- 如需退出 SSH 终端,请运行以下命令:
exit
恭喜!您已经设置并自定义了一个虚拟机,还安装并配置了 Minecraft 服务器这个应用软件!
任务 4. 允许客户端流量
在此任务中,您将配置一条防火墙规则,以便允许客户端连接到 Minecraft 服务器。到目前为止,该服务器虽然具有外部静态 IP 地址,但由于没有防火墙规则,还不能接收流量。
Minecraft 服务器默认使用 TCP 端口 25565。
创建防火墙规则
- 在 Google Cloud 控制台的导航菜单 (
) 中,依次点击 VPC 网络 > 防火墙。
- 点击创建防火墙规则。
- 指定下列内容,将其他设置保留为默认值:
属性 |
值(按照说明输入值或选择选项) |
名称 |
minecraft-rule |
目标 |
指定的目标标记 |
目标标记 |
minecraft-server |
来源过滤条件 |
IPv4 范围 |
来源 IPv4 范围 |
0.0.0.0/0 |
协议和端口 |
指定的协议和端口 |
- 对于 tcp,指定端口 25565。
- 点击创建。用户现在即可通过其 Minecraft 客户端访问您的服务器。
验证服务器可用性
- 在 Cloud 控制台的导航菜单 (
) 中,点击 VPC 网络。
- 在左侧窗格中,点击 IP 地址。
- 找到并复制 mc-server 虚拟机的外部 IP 地址。
- 使用 Minecraft Server Status 测试您的 Minecraft 服务器。
注意:如果上面的网站不能正常使用,您可以使用其他网站或下面的 Chrome 扩展程序:
点击“检查我的进度”以验证是否完成了以下目标:
允许客户端流量
任务 5. 安排定期备份
在本任务中,您将对系统进行配置,以便将 Minecraft 游戏世界数据备份到 Cloud Storage。备份应用数据是很常见的活动。
创建 Cloud Storage 存储桶
- 在 Google Cloud 控制台的导航菜单 (
) 中,依次点击 Compute Engine > 虚拟机实例。
- 对于 mc-server,点击 SSH。
- 创建全局唯一的存储桶名称,并将其存储在环境变量 YOUR_BUCKET_NAME 中。为确保其唯一性,您可以使用项目 ID。运行以下命令:
export YOUR_BUCKET_NAME=<在此处输入您的存储桶名称>
- 使用 echo 进行验证:
echo $YOUR_BUCKET_NAME
- 如需使用 Cloud SDK 中的 gcloud 存储工具创建存储桶,请运行以下命令:
gcloud storage buckets create gs://$YOUR_BUCKET_NAME-minecraft-backup
注意:如果此命令失败,可能是因为您创建的存储桶的名称不唯一。如果确实如此,请选择使用其他存储桶名称,更新环境变量,然后再次尝试创建存储桶。
注意:为确保此环境变量永久存在,您可以运行以下命令将其添加到根层级的 .profile:
echo YOUR_BUCKET_NAME=$YOUR_BUCKET_NAME >> ~/.profile
创建备份脚本
- 在 mc-server SSH 终端中,切换到您的主目录:
cd /home/minecraft
- 如需创建脚本,请运行以下命令:
sudo nano /home/minecraft/backup.sh
- 将如下脚本复制并粘贴到文件中:
#!/bin/bash
screen -r mcs -X stuff '/save-all\n/save-off\n'
/usr/bin/gcloud storage cp -R ${BASH_SOURCE%/*}/world gs://${YOUR_BUCKET_NAME}-minecraft-backup/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'
- 依次按 Ctrl+O、ENTER 键保存文件,然后按 Ctrl+X 退出 nano。
注意:该脚本会保存服务器游戏世界数据的当前状态,并暂停服务器的自动保存功能。然后会备份服务器的游戏世界数据目录 (world),并将其内容存放在 Cloud Storage 存储桶中带时间戳的目录 (<时间戳>-world) 内。该脚本在完成数据备份之后,即会恢复 Minecraft 服务器上的自动保存功能。
- 为使该脚本可执行,请运行如下命令:
sudo chmod 755 /home/minecraft/backup.sh
测试备份脚本,并安排 Cron 作业
- 在 mc-server SSH 终端中,运行备份脚本:
. /home/minecraft/backup.sh
- 在脚本运行完毕后,返回 Cloud 控制台。
- 如需验证是否已写入备份文件,请在导航菜单 (
) 中点击 Cloud Storage > 存储桶。
- 点击备份存储桶名称。您应该会看到一个名称中包含日期时间戳的文件夹。现在您已经确认了备份可以正常发挥作用,接下来就可以安排 Cron 作业来自动处理这项任务了。
- 在 mc-server SSH 终端中,打开 Cron 表进行修改:
sudo crontab -e
- 当系统提示您选择编辑器时,输入与 nano 对应的数字,然后按 ENTER 键。
- 在 Cron 表底部粘贴以下代码行:
0 */4 * * * /home/minecraft/backup.sh
注意:这行代码指示 Cron 每 4 小时运行一次备份作业。
- 依次按 Ctrl+O、ENTER 键保存 Cron 表,然后按 Ctrl+X 退出 nano。
注意:此设置每个月会在 Cloud Storage 中创建大约 300 个备份,因此您需要定期删除备份,以免产生额外的费用。Cloud Storage 提供了对象生命周期管理功能,支持为对象设置存留时间 (TTL)、归档对象的较旧版本,或者将对象的存储类别“降级”以帮助管理费用。
点击“检查我的进度”以验证是否完成了以下目标:
安排定期备份
任务 6. 服务器维护
在此任务中,您将连接到服务器并将其关闭,以便执行服务器维护。
通过 SSH 连接到服务器,将服务器停止,然后关停虚拟机
- 在 mc-server SSH 终端中,运行如下命令:
sudo screen -r -X stuff '/stop\n'
- 在 Google Cloud 控制台的导航菜单 (
) 中,依次点击 Compute Engine > 虚拟机实例。
- 选择 mc-server。
- 点击停止。
- 在确认对话框中,点击停止进行确认。
您将退出 SSH 会话。
注意:如需再次启动实例,请访问实例页面,然后点击启动。如需再次启动 Minecraft 服务器,您可以与实例建立 SSH 连接,重新装载永久性磁盘,然后在新 screen 终端中启动您的 Minecraft 服务器,就像之前一样。
使用启动和关停脚本实现服务器维护自动化
您不必手动装载永久性磁盘并在 screen 中启动服务器应用,而是完全可以使用元数据脚本创建启动脚本和关停脚本,通过脚本来自动执行这些任务。
-
点击 mc-server。
-
点击修改。
-
对于元数据,点击 + 添加项,然后指定以下内容:
键 |
值 |
startup-script-url |
https://storage.googleapis.com/cloud-training/archinfra/mcserver/startup.sh |
shutdown-script-url |
https://storage.googleapis.com/cloud-training/archinfra/mcserver/shutdown.sh |
注意:您必须点击添加项以添加 shutdown-script-url。当您重启实例时,启动脚本会自动将 Minecraft 磁盘装载到相应的目录,在一个 screen 会话中启动您的 Minecraft 服务器,然后分离该会话。当您停止实例时,关停脚本会先关停您的 Minecraft 服务器,然后再关停实例。最好将这些脚本存储到 Cloud Storage 中。
- 点击保存。
点击“检查我的进度”以验证是否完成了以下目标:
服务器维护
任务 7. 回顾
在本实验中,您通过安装基础软件(无头 JRE)和应用软件(Minecraft 游戏服务器)创建了自定义虚拟机实例。您对虚拟机进行了自定义,为其挂接并准备了高速 SSD 数据磁盘,您还预留了一个静态外部 IP,以确保该地址保持一致。随后,您在线验证了该游戏服务器的可用性。
您设置了备份系统,将服务器的数据备份到 Cloud Storage 存储桶,并对备份系统进行了测试。然后,您使用 Cron 作业实现了备份的自动化。最后,您使用元数据设置了维护脚本,用于安全启动和关停服务器。
结束实验
完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。
系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交。
星级数的含义如下:
- 1 颗星 = 非常不满意
- 2 颗星 = 不满意
- 3 颗星 = 一般
- 4 颗星 = 满意
- 5 颗星 = 非常满意
如果您不想提供反馈,可以关闭该对话框。
如果要留言反馈、提出建议或做出更正,请使用支持标签页。
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名称和产品名称可能是其各自相关公司的商标。