树莓派在软件工程专业教学中的应用研究

2020-10-09 11:01汪文彬吴淑婷马玉春
软件 2020年8期
关键词:树莓派

汪文彬 吴淑婷 马玉春

摘  要: 软件工程专业的教学实践离不开服务器,而服务器环境的搭建比较繁琐,服务器本身也相对昂贵,如果用单机实践客户机与服务器,与实际生产环境也不一致。树莓派是卡片式计算机,利用树莓派搭建服务器,价格低廉,在使用过程中,除了电源不需要任何外接设备,可以用来便捷地开发Web应用程序及网络数据库管理系统,对学生来说比较直观,容易理解。

关键词: 树莓派;Linux;MySQL;Tomcat

中图分类号: TP311.5    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.08.001

本文著录格式:汪文彬,吴淑婷,马玉春. 树莓派在软件工程专业教学中的应用研究[J]. 软件,2020,41(08):01-05

【Abstract】: The teaching practice of software engineering cannot be carried out without the server, and the construction of the server environment is very complicated, and the server itself is relatively expensive. If a single machine is used as both the client and server, it is not consistent with the actual production environment. Raspberry Pi is a card type computer; it is feasible to construct a multifunctional server at a low price with Raspberry Pi. The server does not need any external equipment except the power supply, and can be used to develop Web applications and network database management system conveniently, which is more intuitive and easy for students to understand.

【Key words】: Raspberry pi; Linux; MySQL; Tomcat

0  引言

软件工程专业的特点之一,就是在掌握专业理论的条件下,通过在实践中反复试错來检验和强化理论,从而将理论知识演变为自己的经验,也通过实践来体现理论的价值,为将来的谋职或创业做好准备。现代应用软件的开发离不开服务器,跟早期传统的单机桌面应用程序不一样。因而,为了节省设备,一般采用单机充当客户机(包括浏览器)和服务器,对学生来说不直观,跟实际生产环境也不一样。

树莓派是一种卡片式计算机,只有信用卡大小,现在已经发展到4B版本,最高内建4G内存,可以满足一台简单服务器的基本需要。树莓派通过Wi-Fi建立无线连接,开通SSH,这样可以借助软件工具,利用台式机来输入树莓派命令;安装FTP服务器,可以在树莓派和台式机之间传送文件;在树莓派上安装MySQL服务器,则可以用来实践网络数据库的开发;在树莓派上搭建Tomcat服务器,可以将Web应用程序部署到树莓派上。将此树莓派接上电源,无需外接任何设备,则一个宿舍的同学均可以比较直观地实践以上所有任务。

1  操作系统的烧录与基本配置

树莓派使用TF(T-Flash)卡来安装系统,为了得到较好的性能,一般选择闪迪(SanDisk)10速(写入速度为10 MB/s),32G容量的TF卡,基本能够较好地满足需要。另外还有超高速(Ultra High Speed,UHS)TF卡,可以达到30 MB/s的写入速度。树莓派中可以安装多种操作系统,一般下载文献[1]中的官方版本(Debian版,Linux的发行版之一),该版本兼容性好,本文以此版本展开。另外,Ubuntu MATE系统的可视化效果更好,可以较好地通过该系统支持USB接口的打印机实现网络共享,但目前没有4B版本的系统;Windows 10 IoT Core 系统可以较好地支持物联网应用,但该系统不能直接烧录,需要在线安装。

系统映像下载后,通过Win32DiskImager工具写入TF卡,插入树莓派中对应的插槽,连接键盘、鼠标和HDMI显示器,插上网线,上电启动。初始启动需要设置国家(Country)、语言(Language)和时区(Time-zone)等,勾选使用美国键盘(Use US keyboard),否则有些字符无法输出。缺省用户名为pi,设置一个自己喜欢的用户密码。无需设置Wi-Fi,使用如下第(1)条命令修改设置,第(2)条是配置中的文本内容,这里输入了一个IP地址的DNS,如果有多个IP地址,以空格分隔即可。

sudo nano /etc/dhcpcd.conf (1)

static domain_name_servers=114.114.114.114 (2)

有线比无线的速度快得多。输入命令sudo reboot,启动树莓派,利用有线更新系统,如下第(3)条命令读取需要更新的软件包列表,第(4)条完成系统软件的更新。如果更新不完整,可以添加参数“—fix- missing”,修补丢失的软件包,然后重新启动系统。

sudo apt-get update [--fix-missing] (3)

sudo apt-get dist-upgrade [--fix-missing] (4)

烧录好的树莓派在初始状态下没有root密码。在软件安装和系统配置过程中,有时需要root权限。为了更好地使用系统,可以使用shell命令sudo passwd root来添加root密码。

2  SSH与FTP的安装及配置

SSH连接比Telnet远程桌面连接使用更为安全,已经成为行业标准。使用SSH连接登录树莓派,可以对树莓派进行远程控制与编程开发。树莓派最终作为一个只需要连接电源即可工作的服务器,因而,需要配置好SSH连接,以便输入远程命令。安装FTP服务器则方便台式机与树莓派之间传送文件,这样连U盘也不需要了。

通过命令sudo raspi-config打开系统设置,选择 Interfacing Options -> SSH,设置SSH Enabled,保存退出。通过第(5)条命令安装SSH服务,然后打开/etc/rc.local文件,在语句“exit 0”之前加入第(6)条命令,这样即可开机自动启动SSH服务。圖1为在Windows 10 平台下,通过PuTTY工具建立与树莓派的SSH连接,设置树莓派参数的效果。

sudo apt-get install openssh-server (5)

/etc/init.d/ssh start (6)

在Linux系统中,可供选择的FTP服务器种类众多。vsftpd(Very Secure FTP Daemon,即非常安全的FTP进程)是一个基于GPL发布的类UNIX类操作系统上运行的FTP服务器,支持很多其他传统的FTP服务器不支持的良好特性,小巧轻快,安全易用,十分适合树莓派。通过第(7)条命令安装FTP服务器,第(8)条命令启动服务。但是需要将/etc/vsftpd.conf文件中的local_enable变量设置为YES(即允许本地访问),write_enable变量设置为YES(即允许写操作)。

sudo apt-get install vsftpd (7)

sudo service vsftpd start (8)

配置完毕,重新启动树莓派,即可在台式机上通过“ftp IP”命令(IP替换为具体的地址)连接树莓派,输入第1节配置的用户名pi和对应的密码即可。登录成功后,采用lcd命令切换本地路径,!dir显示本地目录和文件;cd命令切换远程路径,ls命令显示远程目录和文件;put命令上传文件到树莓派(缺省为pi目录),get命令从树莓派(缺省为pi目录)下载文件。

虽然配置好了SSH和FTP服务,但是,还需要通过防火墙开放对应的端口。Linux防火墙的iptables过于繁琐,ufw(ubuntu fireward 的缩写)防火墙工具使用方便高效。通过命令(9)安装ufw防火墙,命令(10)使能或者禁用防火墙,命令(11)缺省将所有端口关闭,命令(12)开放SSH默认端口22,命令(13)查看防火墙状态,即打开了多少端口。相应地,FTP服务需要打开默认端口21,下文需要安装的MySQL服务器需要打开默认端口3306,Tomcat服务器则需要打开默认端口8080,具体根据实际需要进行调整。

sudo apt-get install ufw (9)

sudo ufw enable/disable (10)

sudo ufw default deny (11)

sudo ufw allow 22 (12)

sudo ufw status (13)

3  MySQL数据库服务器的安装与配置

MySQL 是最流行的关系型数据库管理系统之一,采用SQL 语言访问数据库,通用性比较强,目前使用该数据库的主流公司与组织有Facebook、Github、YouTube、Twitter、PayPal、诺基亚、Spotify、Netflix 等。MySQL 软件采用了双授权政策,分为社区版(免费)和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库,高校也经常采用此数据库系统用于教学。

MariaDB数据库管理系统是MySQL的一个分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可,完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的替代品。4B版本的树莓派只能安装MariaDB,这里第(14)条命令即可完成安装。为了能够在其它计算机上也能访问树莓派上的MySQL数据库,需要通过命令(15)修改文件中的bind-address,将本地IP地址“127.0.0.1”修改为“0.0.0.0”。通过命令(16)设置MySQL的root密码。

sudo apt-get install default-mysql-server (14)

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf(15)

sudo mysqladmin -u root -p password (16)

当root密码修改完成后,即可登录MySQL数据库,使用如下数据库命令开启root远程登录权限。

->USE mysql;

->update user set host='%' where user='root' and host='localhost';

->update mysql.user set plugin='mysql_native_ pass?word' wh?ere user='root';

->FLUSH PRIVILEGES;

->exit;

如此配置完成后,通过ufw开放3306端口即可远程访问MySQL数据库系统,用于创建数据库和数据表,执行查改删操作。

4  通过Visual Basic .NET访问MySQL数据库

文献[2]实现了一个基于Windows的事务提醒软件(软件名WinAlarm),方便办公事务安排。但是,采用Access数据库需要安装Office办公软件,不够便捷。如果在一个小公司,将需要提醒的事务放入一个MySQL服务器中,通过桌面程序共享,即可协调大家的工作。这里采用Visual Basic .NET(Express 2019版本)访问MySQL数据库,研发一个支持MySQL的Windows事务提醒软件(WinAlarmMySQL)。MySQL数据库是通过相关驱动程序被开发工具调用的,这里需要下载文献[3]中所列的“Connector/NET”驱动程序,选择8.0.19版的Windows安装程序,安装后的路径如下所示,该驱动程序需要使用4.5.2版的.NET Framework框架。

新建項目WinAlarmMySQL,右击项目,项目属性-->应用程序-->目标框架,选择.NET Framework 4.5.2.如果本机没有该版本的框架,点击“安装其他框架”,到微软站点下载相应的Windows框架安装软件即可。在项目属性的“引用”部分添加对MySql.Data.dll的引用。

ADO.NET DataSet是数据的内存驻留表示形式,它提供了独立于数据源的一致关系编程模型。DataSet 表示整个数据集,其中包含表、约束和表之间的关系。由于 DataSet 独立于数据源,因此 DataSet 可以包含应用程序本地的数据,也可以包含来自多个数据源的数据。与现有数据源的交互通过 DataAdapter 适配器来控制。DataSet、DataAdapter 与数据源之间的关系如图2所示。

本文利用图2所示的数据库模型读写数据。在项目中分别导入(Imports)MySql.Data和MySql.Data. MySqlClient两个类。MySQL驱动提供了MySql?Con-nectionStringBuilder类来构建连接字符串,生成该对象的实例builder后,即可传入用户名、密码、服务器名、端口号和数据库名,通过builder的ConnectionString属性获得连接字符串conn.如下第(17)条语句得到适配器的实例adapter,传入的第一个参数为SELECT语句sql,第二个参数conn是包含用户名与密码等的连接字符串,一条语句即实现了数据源的读取,如图2的模型所示。第(18)条语句生成DataSet实例ds,其中没有数据。第(19)条语句通过Fill方法将数据填入ds,第(20)条语句得到数据表DataTable对象dt,这样即可简单地通过dt对象对二维关系表进行修改、添加和删除操作。但是,对dt的操作仅限于内存,调用第(21)条函数,即可将数据写入数据源。文献[4]中设计的“Access数据库类”详细介绍了使用DataAdapter操作二维数据库的方法,只要稍加改动即可用于操作MySQL数据库。

adapter = New MySqlDataAdapter(sql, conn) (17)

ds = New DataSet() (18)

adapter.Fill(ds) (19)

dt = ds.Tables(0) (20)

adapter.Update(ds, dt.TableName) (21)

5  构建Web应用程序

在“Java程序设计”的教学过程中,一般选用免费的elipse版本作为开发工具,这里选择文献[5]的压缩包,解压缩以后即可直接使用。但需要先安装JDK,并完成配置。构建Web应用程序是每个软件工程专业学生必须掌握的技能,此版本的eclipse不能用来开发Web应用程序,需要通过主菜单路径“Help->Install New Software->Work with下拉框”,选择当前的版本安装“Web, XML, Java EE and OSGI Enterprise Development”插件,打开Progress窗口可以查看安装进度,安装过程中提醒是否安装没有签名的软件,选择全部同意即可。安装完成后,plugins目录下将增加400多个插件。关于eclipse的日期版本号,可以通过主菜单Help下的“About Eclipse IDE”子菜单查看。

安装完Web插件,eclipse即可创建“Dynamic Web Project”,即Web应用程序。但Web应用程序需要Web服务器,这里同样选用免费的Tomcat,从文献[6]下载压缩版,解压缩后即可使用,conf子目录下的server.xml文件中有缺省端口设置(默认8080),如果跟其它软件相冲突,可以在这里调整。执行bin子目录下的startup命令,即可启动Web服务,这样就可以在浏览器中打开Tomcat的默认主页。

在开发Web应用程序的过程中,启动Tomcat不是通过startup命令进行的,而是通过开发环境eclipse本身,因而,需要建立eclipse与Tomcat之间的关联,即进行必要的配置。从主菜单开始,Window-> Preferences->Server ->Runtime Environment->Add,添加Apache Tomcat 9.0,并勾选Create a new local server(创建本地服务器)。接着右击创建的Web项目,Java Build Path->Libraries->Add Library->Server Runtime,下一步选择Apache Tomcat v9.0,这样eclipse就建立了与Tomcat的关联,并且添加了Tomcat的类库支持。

Web应用程序离不开数据库,这里仍然调用MySQL数据库,因而,也需要对应的Java驱动程序,从文献[7]中下载压缩版,操作系统一栏选择“Platform Independent(平台无关)”,解压缩以后将驱动包“mysql-connector-java-8.0.17.jar”复制到新建Web项目的WebContent\Web-INF\lib目录下。以下为查询数据库的关键代码,url中包括IP地址、开放的端口和数据库名firstdb,sql中指示查询数据表grade,最后得到数据集对象rs,通过一个循环(代码略)即可列出所有数据。

Class.forName("com.mysql.cj.jdbc.Driver");

String url = "jdbc:mysql://192.168.1.105:3306/ firstdb";

Connection conn = DriverManager.getCon?nec-tion(url, "root", "123456");

Statement stat = conn.createStatement();

String sql = "select * from grade";

ResultSet rs = stat.executeQuery(sql);

6  部署Web應用程序

Web应用程序开发完成后,需要部署到服务器(树莓派)。首先通过第(22)条命令安装Java环境(无需配置),然后从文献[7]下载Linux版本的Tomcat压缩包,解压缩后放到树莓派的“/usr”目录下。

sudo apt-get install oracle-java8-jdk (22)

运行Tomcat子目录bin下的“./startup.sh”脚本启动Tomcat,即可从浏览器访问本地主页。为了可以从其它计算机访问,需要使用ufw工具开放默认端口8080。关闭Tomcat,执行对应的“./shutdown.sh”脚本即可。现在只是手动启动和关闭Tomcat,在树莓派投入使用后,需要开机自动启动。可以在 /etc/init.d 目录下构建一个服务脚本(命名为my-tomcat.sh),启动该服务的时候,运行startup脚本;关闭Tomcat的时候,运行shutdown脚本。执行第(23)条命令将该服务脚本设置为可运行,通过第(24)条命令将该服务加入系统管理并设置默认启动级别,第(25)条命令允许作为系统服务开机自动启动。

sudo chmod +x /etc/init.d/my-tomcat.sh (23)

sudo update-rc.d my-tomcat.sh defaults (24)

sudo systemctl enable my-tomcat.sh (25)

从上一节导出Web项目TestMySQL.war,采用第2节介绍的FTP工具登录树莓派,通过put命令将Web项目上传到树莓派并复制到Tomcat的webapps子目录,重新启动树莓派。在其它计算机上运行浏览器的效果如图3所示,Tomcat是开机自动启动的,也成功访问了MySQL数据库。

7  教学应用

在软件公司工作,经常需要面对不同的操作系统以及多位员工之间的协作。作为软件工程专业的学生,如果大学四年只守着一台Windows计算机,既作为客户机使用,又作为服务器使用,软件部署界限不明显,直观体会不够深刻,而且,客户机与服务器位于一台计算机上,也容易引起冲突。将树莓派引入软件工程专业的教学实践,可以用来低成本熟悉Linux操作系统及对应的软件开发;配置好Wi-Fi无线连接后,只需要树莓派和电源适配器,即可提供SSH登录,用来熟悉shell命令和简单的代码编写;台式机和树莓派之间的文件传送,不需要使用繁琐的U盘,只要使用FTP功能即可;可以在SSH客户端操作树莓派、安装和卸载软件以及操作MySQL数据库;也可以将Web应用程序部署到树莓派,使其充当Web服务器的功能,在Web应用程序中读写MySQL中的数据。

8  结语

树莓派采用Linux操作系统,价格低廉,携带方便。只要连接Wi-Fi,提供电源,即可充当多种服务器使用,并实现小范围内共享,尤其适合软件工程专业的学生在宿舍进行软件实践。本文重点提供了利用Visual Basic .NET调用MySQL数据库的解决方案,以及在Web应用程序中使用Java调用MySQL数据库的关键代码与项目部署方案。此外,树莓派还可以一条命令安装可视化的Code Blocks开发环境,用来实践Linux操作系统的底层软件开发。树莓派自带的Python开发工具,可以广泛应用于AI开发和硬件设计与操作[9]。

参考文献

[1] Download Raspbian for Raspberry Pi[OL]. (2020-03-21) [2020-08-20]. https: //www.raspberrypi.org/downloads/raspbian/.

[2] 马玉春. 计算机监控系统的仿真开发[M]. 北京: 国防工业出版社, 2015: 182-196.

[3] MySQL Community Downloads[OL]. (2020-03-21)[2020- 08-20]. https://dev.mysql.com/downloads/.

[4] 马玉春, 苑囡囡, 王哲河. 基于Visual Basic 2008的Access数据库类的设计[J]. 软件, 2012, 33(6): 41-43+47.

[5] Eclipse IDE for Eclipse Committers[OL]. (2020-03-21) [2020-08-20]. https://www.eclipse.org/downloads/packages/

[6] Tomcat 9 Software Downloads[OL]. (2020-03-21)[2020-08- 20]. https://tomcat.apache.org/download-90.cgi.

[7] MySQL Product Archives, MySQL Connector/J(Archived Ver?sions)[OL]. (2020-03-21)[2020-08-20]. https://downloads. mysql.com/archives/c-j/.

[8] 马玉春, 汪文彬. Android个性化服务软件的设计及教学应用[J]. 软件, 2020, 41(1): 24-28.

[9] 杨丛丛, 吴涛, 张安峰等. 基于树莓派的无线遥控移动机器人设计及运动控制[J]. 软件, 2020, 41(2): 97-101.

[10] 韩万江, 姜立新, 张笑燕等. 基于工程化的软件工程教学案例研究[J]. 软件, 2019, 40(3): 78-87.

[11] 屈天琦. 探究计算机软件工程的维护措施与方法[J]. 软件, 2019, 40(8): 168-170.

猜你喜欢
树莓派
智能安全防盗探测小车
基于嵌入式技术的农村医疗系统设计