kong笔记——kong/konga的搭建

article/2025/10/7 10:22:23

kong笔记 目录导航

本篇及以后的此系列文章皆为实战篇

版本介绍(重点,重点,一定要观察版本,防止不兼容情况!!):

kong 2.5.0

konga 0.14.9

pgsql 9.6

linux centos 7

简述

对于kong的搭建,官网提供的方式有很多,感兴趣的自己可以看看:
kong官方文档

唠叨几句哈:

  1. 本人试过常用的两种方式:

    1. centos 7安装kong;
    2. docker安装kong √ 推荐!!!!

    相对来说,更推荐使用docker的方式,因为可以避免很多麻烦,原因如下:

    • docker直接是配好的kong环境,直接下拉镜像,直接启动,不用配置其他额外的环境
    • linux安装kong的时候,你需要检查很多环境,比如nodeJs(konga出现的问题),yum版本,lua相关问题,以及某些资源镜像下载过慢问题,很是折磨人
  2. 本篇不是还要讲konga的使用么,这里说一下为什么使用konga而不是官方的Kong-Dashboard?
    这是因为官方支持的Kong-Dashboard不支持kong的最新版本,目前仅支持kong2.0以下的版本,就会导致很多功能不能用!!!!很蛋疼…
    Kong-Dashboard的版本控制:

    Kong-Dashboard versionsKong versionsNode versions
    1.x.x>= 0.6, < 0.10
    2.x.x0.10
    3.0.x>= 0.9, <0.12>= 6.0.0
    3.1.x, 3.2.x>= 0.9, <0.13>= 6.0.0
    3.3.x, 3.4.x>= 0.9, <0.14>= 6.0.0
    3.5.x>= 0.9, <0.15>= 6.0.0
    3.6.x>= 0.9, <2.0.0>= 6.0.0
  3. kong自身支持DB模式和无DB模式

    官方建议的是Cassandra数据库或者PostgreSQL数据库!!!!!(如果使用mysql的话,可能另行操作,可实现的)

    什么意思呢?

    • DB方案Kong的集群采用有库模式,数据库选择nosql数据库cassandra,kong集群中的节点共享数据库的配置。通过开发管理控制台,通过Kong提供的Admin API来管理Kong的相关转发配置(包括Services,Routes,Consumers,Plugins,Credentials等)。
    • DB-LESS方案Kong的集群采用DB-LESS模式,通过Kong提供的kong.yml配置来做Kong的相关转发配置(包括Services,Routes,Consumers,Plugins,Credentials等)。每一台kong依赖于各自的配置文件。yml配置完以后需要重启各自的kong服务生效。

    两者都有各自的适用场景:

    1. DB-LESS模式下的kong集群的优势在于,DB-LESS模式引入的组件少,高可用性较好,可维护性较好;劣势在于,不支持api的方式进行配置,需要自行开发服务或者引入第三方工具来替换配置文件。
    2. DB模式的优点在于支持的插件更丰富,kong的功能扩展性更好,支持通过API的方式来直接修改配置;劣势在于引入了数据库,在高可用上和可维护性上相比较DB-LESS低一些。

    引用链接:[kong DB-LESS和DB模式的对比](kong DB-LESS和DB模式的对比_Will Wang0715的博客-CSDN博客)

当然,如果想用linux原装kong,可以参考一下链接,相对来说还是比较全面的:
linux安装和部署kong网关教程和遇到的所有问题的解决帖

本篇采用的是DB模式!!!!!!!!!

docker安装kong

注意本篇文章开头的版本,防止不兼容情况出现!!!!!

  1. 创建kong网络

    docker network create kong-net
    
  2. 安装PostgreSQL
    官方建议的版本是9.6版本

    分为两步走:

    • 创建 PostgreSQL 容器

      docker run -d --name kong-database  --network=kong-net  -p 5432:5432  -e "POSTGRES_USER=kong"  -e "POSTGRES_DB=kong"  -e "POSTGRES_PASSWORD=kong"  --restart always  postgres:9.6
      
    • 使用Kong 容器运行进行数据库初始化(其实就是数据库的迁移而已)

      docker run --rm  --network=kong-net  -e "KONG_DATABASE=postgres"  -e "KONG_PG_HOST=kong-database"  -e "KONG_PG_USER=kong"  -e "KONG_PG_PASSWORD=kong"  -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"  kong:2.5.0 kong migrations bootstrap
      

      如果额外创建一个数据库,可以使用这个命令:

      su postgrespsqlcreate user admin;create database kong_test owner admin;alter user admin with encrypted password '111111';grant all privileges on database kong_test to admin;-- 初始化kong数据库
      docker run -it --rm -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=xxxxxx" -e "KONG_PG_PORT=5432" -e "KONG_PG_USER=admin" -e "KONG_PG_PASSWORD=111111" -e "KONG_PG_DATABASE=kong_test "  -e "KONG_CASSANDRA_CONTACT_POINTS=kong_test " kong:2.5.0 kong migrations bootstrap
  3. 创建kong容器

    docker run -d --name kong  --network=kong-net -u root  -e "KONG_DATABASE=postgres"  -e "KONG_PG_HOST=kong-database"  -e "KONG_PG_USER=kong"  -e "KONG_PG_PASSWORD=kong"  -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"  -e "KONG_PROXY_ACCESS_LOG=/dev/stdout"  -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout"  -e "KONG_PROXY_ERROR_LOG=/dev/stderr"  -e "KONG_ADMIN_ERROR_LOG=/dev/stderr"  -e "KONG_ADMIN_LISTEN=0.0.0.0:8001,0.0.0.0:8444 ssl"  -p 8000:8000  -p 8443:8443  -p 8001:8001  -p 8444:8444  --restart always  kong:2.5.0
    

    这里要注意几点:

    1. 一定要添加上 -u -root,因为kong启动的过程中,会创建一些文件以及文件夹,如果没有添加此参数,会出现permission defined…等等众多权限问题!!!!!

      很抓狂的,刚开始添加的是 --privileged=true该命令,按道理应该是可以的,但后来的实验中不可以,对,不可以!!!!!后来才知道,添加的是 -u -root命令

    2. 如果想要kong的最新的版本,可以将 kong:2.5.0修改为你想要的版本,比如 kong:latest;

    3. 对于 KONG_ADMIN_LISTEN=0.0.0.0:8001,0.0.0.0:8444 ssl命令,只是为了让kong可以在外网访问,可以不配置,也可以在kong.conf里配置

      就是你kong在linux里面部署,但是你想在本地浏览器访问的话,就必须配置这个参数。

    4. KONG_PROXY_ACCESS_LOG=/dev/stdout" -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" -e "KONG_PROXY_ERROR_LOG=/dev/stderr" -e "KONG_ADMIN_ERROR_LOG=/dev/stderr这些命令暂时先留个坑,后面有说~

  4. 测试kong是否成功

    • 在linux命令行里面输入:curl http://localhost:8001 返回一堆json即为成功!
      1632023905(1).jpg

    • 或者在浏览器输入:http://IP:8001

      如果浏览器没显示,curl成功,则是因为kong.conf 文件重的 admin_listen 配置未生效!!!

      打开kong.conf,找到admin_listen,配置为:
      admin_listen = 0.0.0.0:8001, 0.0.0.0:80,0.0.0.0:8444 ssl

      注意是ip!!!,不是localhost(我这里是本地docker搭建的,所以是localhost)

      1632024416(1).jpg

    此时,kong的搭建已经完成,你可以进行kong功能的基本测试了!!!!

    至于konga,他其实就是一个kong的可视化API操作页面,非必须的,当然我们为了操作方便,进行更多的测试可以选择搭建它。

docker搭建konga

在上述操作的基础上,运行docker命令:

docker run -p 1337:1337 --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" -e "DB_DATABASE=konga_db" -e "KONGA_HOOK_TIMEOUT=120000" --name konga pantsel/konga:0.14.9

此时打开浏览器,访问http:// IP :1337,即可进入以下页面:

image-20210919163150025.png

首次进入konga的时候,需要创建用户名与密码。

创建成功之后进入konga系统,如下页面:

image-20210919163430215.png

比如 Name:kong

​ Kong Admin URL: http://ip:8001

注意,kong的api接口端口都是8001!!!!

接下来,你就可以进行通过konga才操作kong了。

附:成功之后的页面:
image-20210919171744259.png

另外,也顺便提一下把,采用上述的konga部署步骤,会造成一个问题:

就是konga里的相关的数据不会记录,每创建一次容器就会导致数据消失,比如之前已经创建好的用户名,密码,即这些数据没有持久化,所以,你可以选择性的建立一个konga的数据库,相关语句:

su postgrespsqlcreate user konga;create database konga owner konga;alter user konga with encrypted password 'kongapassword';grant all privileges on database kong to konga;#初始化数据结构语句,迁移konga的数据
docker run --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://konga:konga@xxxxx:5432/kongapostgresql://konga:konga@xxxxx:5432/konga
其中,konga:konga代表的是用户名,密码
xxxx:5432代表你的数据库地址
/konga代表的是你自己创建的数据库

上述操作完成之后,执行命令:

docker run -d -p 1337:1337 --network=kong-net -e "DB_ADAPTER=postgres" -e "DB_HOST=ip地址" -e "DB_PORT=5432" -e "DB_USER=konga" -e "DB_PASSWORD=konga" -e "DB_DATABASE=konga" -e "KONGA_HOOK_TIMEOUT=120000" -e "NODE_ENV=production" --name konga pantsel/konga:0.14.9

这样的话,konga也会有自己的数据库!

知识点

  1. 首先,我们要明白kong的四个端口是干嘛的:

    • 8000/8443,这两个是kong的代理端口
    • 8001/8444,这两个是kong的管理端口,即API端口

    其中,8000,80001是http端口,8443,8444是https端口

  2. 注意文章开头的简述的第三点,数据库的模式;
    数据库里面存储的是kong服务的数据,比如services,routes,plugins等等;
    如果用的是无DB模式,则这些数据都需要在yml文件提前配置

  3. docker部署完kong之后,常用的配置文件目录如下:

    配置文件名称docker内部路径作用
    kong.conf/etc/kong/此文件kong本身是不会创建的,这个文件是通过手动 cp /etc/kong/kong.conf.default而产生的,通过他,可以改变一些kong默认的配置参数,非常重要
    access.log/admin_access.log/error.log/usr/local/kong/logs主要查看请求成功,失败的日志,非常重要
    plugins/usr/local/share/lua/5.1/kong/pluginskong默认的插件所在位置,根据业务需求可自定义插件
    nginx.lua/nginx_kong.lua/usr/local/share/lua/5.1/kong/templateskong自动生成的nginx.conf,nginx-kong.conf的配置模板,
    /usr/local/kong/nginx.conf就是通过此lua文件自动生成的,如果你要自定义nginx,在此修改,切勿修改nginx.conf文件
    constants.lua/usr/local/share/lua/5.1/kongkong携带的插件列表,偷懒的时候用的,在这里添加你的自定义插件name,就部署上去了(注意,是偷懒的时候用的)
    resty库/usr/local/openresty/lualib/resty/openresty携带的lua库,如果你想修改/添加原生resty的lua脚本

踩坑点

  1. 搭建kong的过程中,我对外挂载了logs目录,尽管生成了3个日志文件(access.log,error.log等),但是无法查看是什么鬼?
    还记得上面留有的这些问题么?
    KONG_PROXY_ACCESS_LOG=/dev/stdout" -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" -e "KONG_PROXY_ERROR_LOG=/dev/stderr" -e "KONG_ADMIN_ERROR_LOG=/dev/stderr

    这是因为这些命令直接输出到了控制台,交给了docker的日志管理,所以打不开,如果你想查看日志,去查看docker的日志,命令:

    docker logs 容器名字或者id

  2. 如果你跟我一样,用的是docker desktop搭建的kong和konga,那么你可能会遇到这些问题:

    • 是否支持虚拟化操作
      怎么判断是否支持呢?
      打开任务管理器——> 性能—— > CPU——>右下方有个虚拟化,如果是已启用,则证明你支持虚拟化

    • 出现如下错误:

      error: KongProxyController request error undefined
      error: Sending 500 ("Server Error") response: {error: Error: connect ECONNREFUSED 127.0.0.1:8001at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {errno: 'ECONNREFUSED',code: 'ECONNREFUSED',syscall: 'connect',address: '127.0.0.1',port: 8001}
      }
      

      这个问题的原因是因为没有使用本机的虚拟ip,因为docker desktop在本地搭建了一个虚拟机,要想请求交互,就需要你windows本机的虚拟ip

      win+r cmd

      ipconfig

      找到IPv4地址

      在konga上填写 http://IPv4:8001地址,就可以了

      这个问题很蛋疼的,找了我好久!!!!!!!!!!!!!!!!!!!!!!!!!

      如果出现了同样的问题,按照我的方式还没有解决的话,参考这篇:

      [KongProxyController request error undefined error:connect ECONNREFUSED 127.0.0.1:8001](KongProxyController request error undefined error:connect ECONNREFUSED 127.0.0.1:8001_yhlly_的博客-CSDN博客)

常用命令

其实挺犹豫要不要加上这个模块,想了想,还是加上把,毕竟算个记录,不然到时候又得重新百度一群命令,也挺烦人的~~~~~~~

kong

  1. 启动命令
    • kong start 此命令默认加载kong.conf配置
    • kong start -c /path/file.conf 此命令是启动你自定义配置
  2. 停止命令
    kong stop
  3. 重载
    kong reload

docker

查看所有docker 容器

docker ps -a

启动/停用容器

docker start/stop 容器id

进入容器:

docker exec -it id /bin/bash

将宿主机的文件 拷贝到docker

docker cp /usr/local/share/lua/5.1/kong/plugins/change-url 21c1b12a3d9e:/usr/local/share/lua/5.1/kong/plugins/change-url 

将docker文件拷贝到宿主机,后面路径是宿主机

docker cp 59361b2cb0c7:/tmp/change.log /tmp/change.log

强制删除容器

docker rm -f id

查看容器日志:

docker logs id

docker 如何查看已存在的容器所挂载的目录

docker inspect container_name | grep Mounts -A 20

docker 挂载通过-v来实现:(将容器的soft文件挂载到宿主机的test文件 冒号前是宿主文件路径,后面是容器路径)

docker run -v /test:/soft

还可以通过$PWD挂载, $PWD是当前宿主机的路径

docker run -v "$PWD":/soft

如果出现 inintal option xxxx错误,说明 -v xxxxxx 必须放到前面,不然挂载不上。

挂载过程中出现permission defined,请使用

sudo chmod -R 777 /usr/xxxxxx    对其路径进行赋予权限

docker 日志目录:

docker inspect --format '{{.LogPath}}' id

动态查询日志:

tail -fn200 /日志路径

docker logs 查看实时日志

docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1

–since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。

-f : 查看实时日志

-t : 查看日志产生的日期

-tail=10 : 查看最后的10条日志。

edu_web_1 : 容器名称

linux

  1. 查找文件在哪

    sudo find / -name "pgsql"
    
  2. 查看linux版本

    1. uname -a 内核版本

      显示效果: Linux iZ2ze0njz4i1crmmx5fky2Z 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    2. cat /proc/version 内核版本

      显示效果:Linux version 3.10.0-693.2.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Sep 12 22:26:13 UTC 2017

    3. cat /etc/redhat-release 发行版本

      显示效果: CentOS Linux release 7.4.1708 (Core)

  3. 过滤自己需要卸载的程序

    rpm -q -a | grep 'agent'
    
  4. 卸载软件

    rpm -e --allmatches 'xxx'
    

总结

好了,今天主要是介绍了kong与konga的部署流程,对于使用流程,则交给下篇把~~~

以上自述均出自于作者对kong的理解,如有不对的地方或者遇到什么问题,评论区讨论呀~~~~,哈哈哈


http://chatgpt.dhexx.cn/article/WQPCWGIK.shtml

相关文章

KONG和KONGA部署及配置

个人理解&#xff0c;仅供参考&#xff1a; 首先&#xff0c;kongkonga除去其他高级功能&#xff0c;个人觉得就是把nginx&#xff0c;变成可以页面配置的了。比如&#xff0c;配置的router&#xff0c;service就是反向代理&#xff0c;配置upstream就是负载均衡。 本文只介绍K…

KONG管理界面KONGA安装使用

功能 管理所有Kong Admin API的对象.从数据库、文件和API等导入Consumers。管理Kong多个节点。备份、恢复、迁移Kong Nodes使用快照。使用健康检测监控节点和API状态。Email和Slack消息通知支持多管理用户和设置不同权限支持数据库MySQL, postgresSQL, MongoDB, SQL Server。 …

Konga 使用说明

1、概要 konga 目前作为一个查看 kong 配置的平台使用&#xff0c;具体在设置 kong 参数时&#xff0c;仍存在一定问题。目前配置在 kong dashbord 较为方便。 2、konga 使用 1&#xff09;环境选择 步骤 2 中点选对应环境的小星星。步骤如下&#xff1a; connections.png …

儿童编程积木

学习机器人编程必须运用到各种知识&#xff0c;包括数学、物理、科学以及自然等课本理论知识&#xff0c;只有熟悉掌握了这些&#xff0c;才能运营一个机器人&#xff0c;让它完成规定的动作。格物斯坦小坦克认为学习机器人就是学习一种机器人编程思维。 基于机器人的科学探究实…

scratch(图形化编程工具)做3.0版本的猫咪积木模拟器。

视频效果如下&#xff1a; 代码部分如下: 猫咪积木素材如下&#xff0c;有N个造型动作&#xff1a; 好了&#xff0c;今天的内容就分享到这里了。 好了&#xff0c;今天的教程就分享到这里吧。 本篇文章完整代码和素材我已经放到VIP的QQ群文件中&#xff0c;大家自行下载&#…

数组积木问题 c语言,全排列算法及解决数字搭积木问题

如果你是做这道题不会&#xff0c;那么你可以看这道题的解题思路&#xff0c;如果你是不太理解全排列算法&#xff0c;那么你可以通过这个题来理解。 题目描述&#xff1a; 小明最近喜欢搭数字积木。一共有10块积木&#xff0c;每个积木上有一个数字&#xff0c;0~9。 搭积木规…

Vue实现图形化积木式编程(一)

Babylon.js基础场景搭建 路由前言最终实现效果本文实现效果技术选型1.前端2.后端 完整代码代码分解0.npm安装相关依赖1.引入模块2.场景初始化3.ArcRotateCamera 相机初始化4.灯光初始化5.地面初始化5-1. 绿地5-2.网格地面 6.正方体物体初始化7.天空盒初始化 后续计划Babylon.js…

Vue实现图形化积木式编程(十二)

执行Blockly生成代码 路由下一篇历史回顾Babylon.js部分Blockly部分 前言最终实现效果本文内容实现思路问题分析问题原因不优雅解决优雅解决 完整代码 后续计划开源项目GitHub链接资源下载链接你的点赞是我继续编写的动力 路由 下一篇 Vue实现图形化积木式编程(十三) ---- 步…

Vue实现图形化积木式编程(二)

Babylon.js加载模型到场景中 路由下一篇历史回顾 前言最终实现效果本文实现效果完整代码操作分解&#xff08;Babylon.js模型格式转换与导入&#xff09;0.在开源模型网上下载一个模型/自己制作一个1.转换为.babylon文件2.将模型文件放在服务器上方案一&#xff08;最新发现的方…

python积木式编程_TurnipBit—MicroPython开发板:从积木式编程语言开始学作小小创客...

编程、建模、制做动画和游戏……这些当初咱们默认只有成年人玩得转的事情,如今早已经被无数小孩子给颠覆甚至玩出新境界了。热爱科技和动手的“创客”(Maker)如今在全世界都煊赫一时。今年以来,对青少年的创客教育在中国不管是庙堂仍是大众而言亦是热门话题。编程 从TurnipBi…

c++手机编程软件_积木编程软件手机版下载-积木编程软件下载v1.0.1 安卓版

积木编程软件是可以在线可以学习编程的软件,平台给用户提供了大量的编程学习教程&#xff0c;软件还支持在线编程&#xff0c;学习内容丰富&#xff0c;让用户学习起来不会枯燥乏味&#xff0c;就算你是零基础的小白&#xff0c;也可以体验到编程的乐趣。 积木编程官方简介 积木…

Vue实现图形化积木式编程(十三)

步骤运行代码块高亮 路由历史回顾Babylon.js部分Blockly部分 前言最终实现效果本文内容实现1. 安装依赖2. 简化语法3. 引入js解析器4. 运行代码5. 加入高亮 完整代码本文章的用例代码已经同步到github上&#xff0c;运行程序后访问链接即可查看效果: [http://localhost:3000/#/…

搭积木php编程,Primo Toys,一款可以同时搭积木与编程的玩具

原标题&#xff1a;Primo Toys,一款可以同时搭积木与编程的玩具 时下社会&#xff0c;“编程”一词早已不是成人世界的一个职业&#xff0c;如今&#xff0c;编程能力就像蜗牛日常的读写一样&#xff0c;渗透到孩子生活的方方面面&#xff0c;不论是APP&#xff0c;游戏&#x…

python的积木式编程

edu.codemao.cn https://wood.codemao.cn/ https://static.codemao.cn/wood_docs/web/code/Control.html 编程猫和scratch大同小异&#xff0c;和其他Python平台相比较&#xff1a; 优势&#xff1a; 支持硬件编程丰富的Python库积木/代码一键转换搭积木 学编程使用方便&a…

c语言的积木编程,c语言入门第3节,掌握它就能随心所欲的编程了,自己造积木...

前面两节介绍了如何快速搭建 C 语言开发学习环境&#xff0c;并且给出并解释了 hello world 的代码。上一节介绍了C语言的函数&#xff0c;应该注意到&#xff0c;到目前为止&#xff0c;我们使用的函数都是现有的系统函数(例如 printf&#xff0c;sin 等函数)。事实上&#xf…

等边三角形的积木编程

用Scratch里的画笔&#xff0c;可以很方便的画出等边三角形。步骤如下&#xff1a; 1、定义"等边三角形"积木 点击Scratch里的"自制积木" --》制作新的积木 --》直线 --》添加4个参数&#xff0c;如图(1)、(2)所示&#xff1a; 图(1) 定义"等边三角…

积木编程软件

当然这种观点是很荒谬的&#xff0c;不会编程不等于文盲。虽然大多数父母都有文化和读写能力&#xff0c;但是大多数父母都不是程序员&#xff0c;也不知道程序员需要什么样的技能。格物斯坦认为&#xff1a;针对孩子们的编程书籍给出的都是一些问题的“标准”答案。如果你的孩…

金字塔的积木编程

金字塔是一个上尖下方的四面体&#xff0c;它的截面是一个三角形&#xff0c;可以用长方形的砖块去堆叠成一个大的三角形来表示金字塔。     下面介绍使用Scratch来画金字塔。 1、定义"砖块"积木 图(1) 定义"砖块"积木 图(2) "砖块"积木代码 …

OpenBlock Desktop v2.3.1积木编程

最新版 2.3.1 Release OpenBlock Desktop v2.3.1 openblockcc/openblock-desktop GitHubhttps://github.com/openblockcc/openblock-desktop/releases/tag/v2.3.1 新功能 用户可以在串口终端中使用回车键发送数据。提高 esp32/8266 的默认上传波特率以提高上传速度。删除 es…

python积木编程软件_积木编程软件手机版下载

积木编程软件是可以在线可以学习编程的软件,平台给用户提供了大量的编程学习教程&#xff0c;软件还支持在线编程&#xff0c;学习内容丰富&#xff0c;让用户学习起来不会枯燥乏味&#xff0c;就算你是零基础的小白&#xff0c;也可以体验到编程的乐趣。 积木编程官方简介 积木…