App Inventor局域网教学环境部署指南(1)
所谓局域网教学环境,是指在学校常规计算机网络教室中,指定一台配置较高的计算机(1G以上内存、20G以上硬盘等)作为服务器,在其上安装App Inventor开发和编译服务器软件,为其他学生和教师用机提供统一的教学开发服务。相对于其他技术形式(利用公共服务资源以及安装离线版或桌面版软件等),该方案对前端客户机的技术要求不高,兼容性和适应性较好,且便于对教学过程和资源进行统一控制、管理。
整个App Inventor网络教学环境包括服务端、客户端和手机端等三个部分。其中,后二者的部署比较简单,只需在教师和学生用机上分别安装好Chrome或Firefox浏览器,在测试手机上安装相应版本的AI伴侣(本文针对的版本为2.40),并保证与安装浏览器的计算机处于同一个网段即可。如果暂时不具备手机测试的条件,还可以选择采用手机模拟器、桌面版AI伴侣等多种替代方案。相对而言,后端服务器的部署就稍微复杂一些,涉及从安装、配置到维护等一系列相关的工作。因此,本文将重点为大家介绍服务端的部署过程和方法,同时还会包括一些常见问题的处理和解决办法等。
1、安装服务端软件
实际上,现有的App Inventor离线版(或桌面版)本身已经具备了提供网络服务的能力。也就是说,如果在安装了离线版(或桌面版)的机器上运行一下安装目录中的批处理文件“AppInventor2017浏览器版.cmd”,应该是可以在另一台安装了Chrome浏览器的机器上,通过输入这台机器的IP地址和默认服务端口8888,正常访问到所安装的开发环境的,只是因为没有进行相关设置,所以无法使用用户登录、项目分享等网络教学所需的功能,这也是我们在这篇指南中所要解决的关键问题。除此之外,我们还可以通过直接下载方式,来获取经过特别优化的服务器版软件包,其地址为“https://pan.baidu.com/s/1nuEro2P”,存取密码为“tw23”。
服务端软件的主要安装方式是,首先在指定服务器上某个盘符(如D盘)的根目录下,创建一个服务器安装目录,如“server1”等,注意目录名中不能出现中文字符和空格,然后将下载到的服务器软件整体解压、复制到这个目录中去。为了测试安装效果,可以像前面所说的那样,试着运行一下批处理文件,看看是否能在另一台机器上正常访问。
需要注意的是,如果利用离线版(或桌面版)作为服务端软件,那么一旦使用了其中的桌面版功能,也就是执行了其中的“AppInventor桌面版.exe”可执行文件,有可能会造成开发和编译服务器参数变化,从而使之后所提供的服务无法被正常访问。所以,在正式启用服务前,最好先检查一下服务器的配置文件(即安装目录中的“AppInventor2017浏览器版.cmd”及“resources/appinventor/DevServer/WEB-INF”子目录中的“appengine-web.xml”文件),确保其中的服务地址和端口值与批处理文件中的设置一致。如不一致,可以使用文本编辑器软件(推荐Sublime Text或Notepad++)分别对其进行修改,这同样也适用于解决服务端口被占用的问题。

2、添加和管理用户
App Inventor的系统用户分为管理员和普通用户两类,其中管理员具有管理用户、下载源码以及调试系统等功能的使用权限,一般由授课的教师或管理系统的其他运维人员担任。在开始进行网络化教学前,我们需要先将教师用户加入系统,并为其分配管理员权限,然后再由教师用户根据教学需要添加学生用户,分配相应的用户名称和密码。
为完成上述工作,我们首先需要开启App Inventor的用户登录功能。做法是,打开安装目录中“resources/appinventor/DevServer/WEB-INF”子目录里的“appengine-web.xml”文件,在其中找到名为“auth.usegoogle”和”auth.uselocal”的属性设置项,分别将其对应的值修改为“true”。

修改完成并保存后,执行“AppInventor2017浏览器版.cmd”启动服务系统。当任务栏上的两个终端窗口中分别出现“Dev App Server is now running”和“Server running”等信息时,在教师用机上打开浏览器,在地址栏中输入服务器对应的IP地址和端口,即可进入App Inventor的登录页面。

不难发现,App Inventor系统提供了两种用户登录方式。其一为本地账户登录方式(与上述auth.uselocal属性对应),用于正式使用时的用户登录,用户需提供用户名和密码,如用户不存在则会提示错误信息;其二为谷歌账户登录方式(与上述auth.usegoogle属性对应),登录时只需提供用户名,不需要密码,当用户不存在时会自动创建用户信息,因此,这种方式更适用于在初始时创建管理员用户。
点击登录页面中“使用谷歌账号登陆”,进入谷歌账号登陆页面,将其中Email对应输入框中的“test@example.com”修改为管理员账户的用户名称,如“admin”,然后将下面“Sign in as Administrator”对应的选择框选中,最后点击“Log in”按钮,以管理员身份登录App Inventor系统。

在浏览器中打开的开发环境页面中,我们可以发现多出一个“管理”菜单项,用鼠标点击该菜单项,并在出现的下拉菜单中,选择其中的“用户管理”功能。

在接下来出现的“用户列表”界面中,输入前面已设定好的管理员用户名称(如“admin”),点击“搜索”查询该用户信息。或者,也可以不输入任何内容,直接点击“搜索”按钮,查找全部用户信息。

看到查询结果后,点击“用户邮箱”列中出现的管理员用户名称对应项(如“admin”)。当系统弹出“更新信息”窗口时,在“用户密码”对应的输入框中为管理员用户设定密码,并将下面的“管理员”和“审核者”两项同时选中,然后点击“确定”关闭窗口。

至此,我们已经完成了管理员用户的设定工作,为了验证一下工作成果,我们需要先退出当前用户登录状态(点击开发环境右上角用户菜单中的“退出”项),并停止服务器软件的运行(在服务器主机任务栏的两个终端窗口中分别按Ctrl-C,等出现“Yes/No”选项时选择“Y”,出现系统提示符后关闭窗口),然后修改其安装目录中的服务器配置文件(“resources/appinventor/DevServer/WEB-INF”子目录中的“appengine-web.xml”),关闭其中的谷歌账户登录方式,即将”auth.uselocal”属性值设为“false”。

修改完成后,重新启动服务器软件,然后在任一台联网的教师或学生用机中,用浏览器访问App Inventor服务。可以看到随后出现的页面中,就只有本地账户的登录方式了。

在“邮箱”和“密码”对应的输入框中,分别输入前面已分配好的管理员用户名和密码,并点击“登录”按钮。重新登入App Inventor的开发环境后,检查一下上部的系统菜单,如能看到“管理”菜单项,则证明管理员的设置是成功的。接着,我们就可以进行其他学生用户的添加和设置工作了。其基本步骤是,先选择“管理”菜单中的“用户管理”项,然后点击“用户列表”面板中的“添加用户”按钮,在弹出的“添加用户”窗口中,分别输入用户名称和密码,最后点“确定”按钮完成添加工作。重复执行上面的操作,即可完成对多个用户的添加工作。

如果需要修改用户的登录信息,可以仿照前面修改管理员用户信息时的做法,先搜索用户,然后在结果中点击用户名称,并在弹出的“更新信息”窗口中重新设置用户名称和密码,点击“确定”按钮进行保存。而如果需要删除某个系统用户,则需要访问另外一个服务地址,即在现有的服务地址和端口后面加设“/_ah/admin”路径。

这实际是一个App Inventor后台数据库的管理工具,可以不经系统授权直接访问,因而存在一定的安全隐患,我们在后面的章节中还会讲解如何将其屏蔽,而在这里,我们可以利用这一工具,来实现删除用户信息的功能。具体做法是,点击“List Entities”按钮左侧的下拉框,选择其中的“UserData”项,然后点击“List Entities”,此时系统会列出所有已注册用户的信息。

选中欲删除用户项左侧的选框,然后点击用户数据面板下侧的“Delete”按钮,在弹出的确认窗口中点击“确定”,随后就可以看到面板中的相关数据行被移除,表示数据库中的相关数据已被删掉。但实际此时的系统缓存中仍存在该用户的信息,因此,我们需要进一步点击下面的“Flush Memcache”按钮,清除缓存的数据信息,如此才能彻底完成对用户信息的删除工作。
(未完待续)