2048静态网页从沙箱到ECS:部署、验收与资源释放实战
这次用单文件2048网页做了一次从开发沙箱到临时ECS的完整部署。游戏本身没有后端和外部依赖,但过程中仍然遇到了临时地址过期、实例创建后网页尚未就绪、提交结果与任务积分需要分别核对等问题。这里整理实际采用的检查方法,方便以后复用。
本文由AI协助整理,技术过程来自实际部署记录;示例中的地址均为占位符,不包含账号、实例标识或访问凭据。
1. 先确定唯一的作品版本
单文件网页很容易出现“本地修了一版、沙箱又修了一版、服务器仍是旧版”的情况。这次正式发布的index.html为9489字节,沙箱与ECS均使用同一文件。
部署前先记录内容哈希:
sha256sum index.html
不要只比较文件名、页面标题或文件大小。相同大小的文件也可能内容不同;浏览器能打开页面,也不等于打开了最新版本。
游戏功能检查可以分成两层:先验证四个方向的移动、相同数字只合并一次、计分、无效移动不生成方块、胜利后继续游戏等逻辑,再在浏览器中实际操作。自动化逻辑检查不能替代真实手机的触摸体验测试。
2. 沙箱只公开作品目录
开发工作区通常还包含脚本、配置与临时认证文件。不要直接把整个工作区作为HTTP服务根目录。
本次将公开内容放在独立的public2048目录,只保留index.html;本地服务绑定回环地址,再由经过认证的DevBridge临时隧道公开指定端口。这样可以把公开页面与开发文件分开。
临时隧道适合活动验证和短时演示。它可能受有效期、沙箱休眠或重启影响,不能把一个暂时返回200的地址当成长期托管。恢复链接后应再次下载作品并比对哈希,确认返回的不是错误页或旧文件。
3. 用初始化脚本完成临时ECS部署
同一作品随后部署到Rocky Linux 9.8的临时ECS。这里采用Nginx提供静态页面,通过cloud-init在创建时完成安装与文件写入,因此本次实例没有为了部署而开放公网SSH或RDP。
配置原则是:只为这次HTTP演示开放公网TCP80;没有业务需要的登录端口不开放。其他应用若需要远程维护,应另外设计受限管理入口,不能直接照搬这个一次性演示配置。
初始化脚本的核心步骤可参考:
#!/usr/bin/env bash
set -euo pipefail
dnf -y install nginx
install -d -m 0755 /usr/share/nginx/html/hc-activity
# 将已经核验的index.html写入上述目录。
# 实际脚本可以内嵌作品内容,但不要内嵌云账号密钥。
restorecon -RF /usr/share/nginx/html/hc-activity
nginx -t
systemctl enable --now nginx
这只是步骤示意,直接运行并不会自动生成游戏。完整初始化脚本还应检查作品写入是否成功、文件非空以及哈希是否匹配。使用set -euo pipefail有助于在安装或校验失败时停止,避免把半完成的部署误报为成功。
4. 实例“运行中”与网页“就绪”分开判断
这次实际遇到过:控制台已经显示实例运行,但公网HTTP最初还没有返回有效页面。原因排查需要考虑初始化脚本仍在执行、软件包安装和Nginx启动需要时间等情况,不能刚创建就把一次失败认定为安全组故障。
可以设置有限次数的请求检查,例如每隔数秒请求一次,设置单次超时,并给出总等待上限。超过上限后记录错误,转入诊断;不要无限重试,也不要直接关闭防火墙。
curl --fail --show-error --max-time 10 http://PUBLIC_IP/hc-activity/index.html -o downloaded.html
sha256sum downloaded.html
PUBLIC_IP需要换成自己的当前地址。本次在初始化完成后,公网下载得到HTTP200、9489字节,内容哈希与沙箱正式文件一致;浏览器也实际显示了游戏。
5. 将部署、提交和到账分别留证
活动任务中至少有三个不同结果:网站可以访问、官方接口接受作品、成长中心显示奖励。它们应分别验证。
本次通过活动官方说明指定的提交技能完成实际提交,记录服务端HTTP状态、业务码和提示信息;随后另外进入成长中心积分明细,核对任务名称及余额变化。脚本中预设的奖励数字不能替代真实到账记录。
若网页入口与Agent提交入口行为不同,应保留当时的错误和成功响应,按对应官方流程处理,不要把一个入口的失败推断成所有入口永久不可用,也不要绕过访问控制。
官方活动入口:https://open.huaweicloud.com/openplatform/activity/
6. 结束时核对关联资源
对于短时实验,清理也是部署流程的一部分。创建前确认完整报价、预算和删除计划,尽量使用云平台原生定时删除作为后备;验证结束后按计划及时释放。
本次在提交成功并核对到账后删除临时ECS,同时确认系统盘和公网IP随实例释放。然后分别按精确资源标识查询磁盘、公网IP列表,最后删除只属于本次实验的安全组,保留原来的VPC、子网及默认安全组。
“删除实例成功”不应直接推导为“所有相关资源都已消失”。同样,购买页面的小时报价不是最终账单,实际费用要在出账后核对。
这套流程最有价值的产物是可复用的作品文件、初始化脚本和分层验收记录。网页上线只是中间一步,把内容一致性、服务就绪、任务结果与资源释放全部核对,后续维护才有可靠依据。
- 点赞
- 收藏
- 关注作者
评论(0)