华为云开发者闯关实录:码道沙箱 + ECS 持久化部署一个 2048 小游戏

举报
yd_210718448 发表于 2026/10/22 12:01:27 2026/10/22
【摘要】 在华为云码道沙箱里写完一个单文件 2048 小游戏,再用 ECS 持久化部署让它对外可访问。记录四个真实踩坑:base64 过沙箱通道传文件、安全组放行 80 端口、SELinux 上下文导致 403

一、任务背景

华为云成长中心的「开发者闯关」活动包含两个一次性任务:完成沙箱部署(+1000 积分)与完成 ECS 部署(+2000 积分)。本文记录一个纯前端小游戏(2048)从码道沙箱到 ECS 持久化部署的完整链路,以及过程中踩到的坑。

二、作品本体

作品是单文件 index.html,不依赖任何构建工具与外部 CDN:CSS Grid 铺 4x4 棋盘,绝对定位的 tile 通过 transform: translate() 做滑动动画,合并时播放 pop 缩放动画,键盘方向键与移动端触摸滑动共用同一套 move() 逻辑,localStorage 记录最高分。单文件的好处是后面所有部署环节都只需要搬运一个文件。

三、沙箱部署阶段

沙箱即华为云开发者空间 / 码道(CodeArts)的云端开发环境。要点有三个:

1. 文件上传不要指望网页剪贴板。把 HTML 做 base64 后通过沙箱的 open-api 写入远端,再在沙箱内 base64 -d 还原,可以避免一切转义与换行被吞的问题。

2. 命令执行走沙箱提供的一次性执行接口(exec 一条命令、返回 stdout/stderr),比开交互式终端更容易自动化,也便于把部署过程写成可重放的脚本。

3. 作品提交必须在沙箱内使用 AK/SK 完成,网页控制台上的提交入口是点不动的——这是最容易卡住新人的地方。凭据通过环境变量注入,不要把 AK/SK 写进仓库。

如果提示资源不足,去开发者空间把沙箱切换成「持久化版」,或者换一个持久化规格重新创建,通常就能开机成功。持久化版按核时计费,初始赠送的免费额度足够做完这类小作品。

四、ECS 持久化部署阶段

ECS 侧的目标是:把作品变成一个公网可访问、且关机重启后仍然在跑的服务。整体三步:

# 1. 安装并启动 nginx
dnf install -y nginx
mkdir -p /usr/share/nginx/html/hc-activity

# 2. 投放作品(base64 传输,避免转义问题)
base64 -d > /usr/share/nginx/html/hc-activity/index.html <<B64
<index.html 的 base64>
B64
chmod 644 /usr/share/nginx/html/hc-activity/index.html

# 3. 开机自启
systemctl enable --now nginx
systemctl is-active nginx

需要注意的几件事:

· 安全组必须放行 80/443 入方向,否则本地 curl 永远超时,很容易误判成 nginx 没起来;

· SELinux 环境下 nginx 读取非默认目录可能 403,chcon -Rt httpd_sys_content_t 或直接放到默认 web 根目录更省事;

· 把整套操作写成 setup.sh 一次性执行并落日志(exec > /var/log/setup.log 2>&1),失败时能直接看到卡在哪一步;

· 验证要同时看进程、端口、公网 HTTP 状态码三层:systemctl is-active nginx → ss -lntp | grep :80 → curl -I http://<EIP>/hc-activity/。

五、小结

这条链路本身没有难度,难点全在「平台把哪条路给你走」:沙箱内提交、持久化规格切换、安全组放行,这三点想清楚了,一个静态作品十分钟就能从本地推到公网可访问。积分方面,两个任务合计 3000 分,可在成长中心兑换代金券,用于续费同账号下的按量或包周期资源。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。