APP下载

基于CGI的嵌入式W eb服务器的设计与实现

2016-11-09雷娟娟陈福才

电子设计工程 2016年19期
关键词:环境变量表单调用

朱 锦,雷娟娟,陈福才

(国家数字交换系统工程技术研究中心 河南 郑州450000)

基于CGI的嵌入式W eb服务器的设计与实现

朱 锦,雷娟娟,陈福才

(国家数字交换系统工程技术研究中心 河南 郑州450000)

为了在资源有限的嵌入式设备上能够有效地实现动态Web,本文比较了几种Web服务器的优缺点,选择了性能优异的Boa作为嵌入式Web服务器,阐述了CGI技术的相关原理以及SQLite数据库的定义。本文所设计的查询数据系统以嵌入式Linux操作系统为软件平台,以PowerPC8548为硬件平台,利用HTML表单和CGI技术完成了对后端数据库SQLite的数据信息查询,实现Web客户端与Web服务器的动态交互。

嵌入式Web服务器;Boa;CGI;SQLite

随着计算机网络技术的发展和嵌入式Web应用越来越广泛,需要接入Internet网的信息化产品越来越多。在嵌入式系统中可以通过Web页面进行远程访问和控制,查看或修改远程设备的数据信息。为了满足嵌入式设备接入互联网的需求以及实现嵌入式Web服务器与Web页面的动态交互[1],很多系统引入了CGI技术[2]。

CGI是实现动态Web的基础。文中对嵌入式Web服务器Boa以及CGI技术的相关原理进行了研究,利用CGI技术实现Boa服务器和Web页面的动态交互,实验结果成功证明了其可行性。

1 嵌入式W eb服务器

嵌入式Web服务器(Embedded Web Server,EWS)指的是在现场测试和控制设备中嵌入的Web服务器。EWS是以TCP/IP协议栈为基础进行设计的,在此基础上要构建HTTP、TCP以及UDP等协议。由于嵌入式设备的处理器能力有限,存储容量也小得多,传统的Web服务器很难运行在嵌入式设备上,必须考虑使用体积更小、功能相对简单、消耗资源更少的简单Web服务器来解决这一问题,嵌入式Web服务器便应运而生。

衡量嵌入式Web服务器的性能取决于以下几个方面[3]:1)可移植性,即能方便地在多种目标平台上进行移植;2)可裁减性,使用户可以根据实际需求,裁减掉那些冗余的功能,降低嵌入式Web服务器对资源的需求;3)可交互性,即服务器与目标系统间的交互性越好,说明它的使用越方便,对目标系统的控制越灵活。

常见的嵌入式Web服务器有httpd、apache、goAhead和Boa等。httpd是最简单的一种Web服务器,它的功能最弱,不支持认证,不支持CGI,仅能提供一些静态页面;apache是重量级服务器,成熟稳定,但体积较大,适合复杂的嵌入式应用,在高负载的情况下,没有单进程的服务器性能高;goAhead和Boa都支持CGI,但是goAhead是个比较专用的Web服务器,大部分功能都在服务它自己提供的goform功能和ASP功能,而Boa是一个非常小巧且高效的嵌入式服务器,开放源代码,可执行代码大约只有60 kB,它运行在Linux或Unix下,支持CGI和HTTP,响应请求的速度快,最多可以同时响应50个请求。Boa的设计目标是速度和安全,非常适合于嵌入式系统。为了实现动态Web技术,本文也正是采用了Boa。

2 CGI原理

2.1CGI工作原理

用户通过Web浏览器进行URL访问,形成的HTTP请求通过浏览器发送到Web服务器,Web服务器守护进程接收到该请求后会创建一个CGI的子进程,该子进程将CGI请求的有关数据设置成环境变量,然后根据链接启动指定的CGI处理程序从环境变量中读取数据,经过处理后,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。

2.2CGI的传送数据方式

CGI传送方式[4]是使用HTML表单向Web服务器发送信息。基本语法如下:

其中method属性定义了程序如何将数据传送到Web服务器,传送方式有两种:

1)GET方法

使用GET方法时,表单数据会附加在所指向CGI脚本的URL后一起发送给Web服务器,Web服务器将收到的表单数据赋予环境变量QUERY-STRING,CGI程序将以字符串的形式从环境变量QUERY_STRING中获取数据。

2)POST方法

POST方法通过使用标准输入(STDIN)将表单数据传送给Web服务器。将数据的长度存放在环境变量CONTENT_ LENGTH中,CGI程序先从CONTENT_LENGTH中读出数据的长度,然后再从标准输入STDIN中获取数据。

2.3CGI环境变量

CGI环境变量[5]是CGI的重要内容,所有的信息都是通过环境变量和CGI联系,服务器与CGI程序交换信息的工作方式也是通过环境变量来实现的。当通过浏览器访问Web服务器时,利用环境变量来保存所发出的请求,CGI程序再访问这些环境变量,换句话说,环境变量是Web服务器和CGI脚本进行数据传递的桥梁。

2.4CGI的调用方法

在Web网页中调用CGI程序有两种方法[5]:表单(FORM)和超链接(URL)。

1)表单(FORM)调用方法

当Web页面以表单的方式向Web服务器提交数据时,把CGI程序存放的相对路径放在

标签的action属性中,并把method属性设置为GET或POST提交方式,其调用形式如下:

2)超链接(URL)调用方法

当Web页面以超链接的形式调用CGI程序时,将CGI处理程序存放的相对路径放在标签的href属性中,作为链接对象。默认GET提交方式,其调用形式如下:

由于这种调用方法具有一定的局限性,只能静态传递数据,所以大多数情况下更多采用表单 (FORM)调用的方式。

3 SQLite介绍

SQLite是D.RichardHipp用C语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。SQLite支持多数SQL92标准,可以运行在所有的操作系统上,并且支持大多数计算机语言。它不同于其它大部分的SQL数据库引擎,因为它的首要设计目标就是尽量的简单化,以达到易于管理、易于使用、易于嵌入到其它的大型程序中、易于维护和配置的目的。

SQLite的特征[6]如下:零配置、无服务器、精简性、简单的访问、可变长度的记录。SQLite不仅小、快,而且简单、可靠,对于嵌入式系统,其管理、执行、维护的简单化比企业数据库引擎提供的许多复杂应用更重要,因此SQLite数据库广受开发者欢迎。

4 CGI在嵌入式W eb服务器中的动态测试

4.1嵌入式W eb服务器软件构成及工作原理

嵌入式Web服务器采用Boa服务器,其系统架构如图1所示。当服务器Boa接收到客户端的HTTP请求消息后,服务器对消息进行解析。将解析后得到的各种参数传递给CGI,CGI应用程序通过环境变量读取从Web服务器解析到的数据,并对客户端的请求进行解释和处理,然后使用SQL语句来检索或者更新数据库,最后CGI应用程序将处理结果按照CGI规范返回给Web服务器,Web服务器会对CGI应用程序的处理结果进行解析,并在此基础上生成HTTP响应信息返回至Web前台页面,呈现给用户,完成动态交互。

图1 嵌入式Web服务器系统架构

4.2动态测试

下面以查询表信息为例,介绍利用CGI处理程序实现系统的表信息查询验证,其实现流程图如图2所示:

图2 数据查询流程图

当用户点击查询按钮时,程序将进入Web浏览器查询页面,在该页面下,用户可以查询系统的表信息。当查询表单提交给Boa服务器后,CGI程序将被调用,程序首先打开用户信息数据库,判断管理员的输入是否合法,若不合法,则浏览器刷新当前页面要求重新输入;若合法,则执行SQL语句SELECT查询数据库。若表单存在的话,则浏览器显示表单信息给用户;若表单不存在的话,则程序退出。

页面具体操作:在浏览器地址栏输入嵌入式服务器的IP地址及端口号:xx.xx.xx.xx:xx,进入查询系统的登陆界面,进行身份验证后,可开始数据查询操作,下面以插入一条数据记录项为例:

执行插入操作前进行查询数据项,见图3:

图3 操作前数据查询显示页面

插入操作完成后,再次进行查询数据项,结果见图4:

图4 操作后数据查询显示页面

5 结束语

文中基于项目的实际需求选择了Boa服务器,在嵌入式系统中结合C语言编写CGI程序,完成了客户端与嵌入式Web服务器之间的动态交互,从而通过浏览器实现对后端数据库SQLite的数据信息查询。这种方案运行效率高,通用性强,有着广泛的应用前景,为用户后续对嵌入式设备的远程监控奠定基础。

[1]李勇.CGI在嵌入式WEB服务器中的应用和实现[J].微计算机信息,2008,24(10):110-111.

[2]WANG Zhen-xi,REN Xian-yi.Astudyon CGI ofembedded Webserver[J].International Symposiumon Computer Science and Computational Technology,2008,(1):480-483.

[3]施忠华.基于嵌入式Linux和Sqlite的Web服务器的研究及应用[D].南昌:南昌大学,2012.

[4]王俊,郭书君.嵌入式Web服务器的实现及其CGI应用[J].电子设计工程,2011,19(21):152-154.

[5]王宝忠,马成.基于CGI技术的嵌入式动态Web的研究与实现[J].电子设计工程,2012,20(18):162-163.

[6]杨洋.SQLite数据库在嵌入式系统中的应用实践[J].柳钢科技,2013,(5):41-43.

Design and implementation of embedded W eb server based on CGI

ZHU Jin,LEIJuan-juan,CHEN Fu-cai
(National Digital Switching System Engineering&Technological Research Center,Zhengzhou 450000,China)

In order to achieve the purpose of dynamic Webeffectively in the limited resources of embedded devices,by comparing the advantagesand disadvantagesof severalWeb servers,this paperselects the excellent Boa as an embedded Web server,and illustratestheoperationalprincipleofCGItechnology andSQLite database.The design of data query system in this paper takesembedded Linux operating system as software platform,and takes PowerPC8548 as the hardware platform,realizes data information query of the back-end SQLite database by usingHTML forms and CGI technology,and complete dynamicinteractivitybetweentheWeb clientandtheWeb server.

embedded Web server;Boa;CGI;SQLite

TN915

A

1674-6236(2016)19-0191-03

2015-10-08稿件编号:201510017

朱 锦(1991—),男,江苏高邮人,硕士。研究方向:信息通信网技术。

猜你喜欢

环境变量表单调用
电子表单系统应用分析
从桌面右键菜单调用环境变量选项
核电项目物项调用管理的应用研究
彻底弄懂Windows 10环境变量
基于图表示和匹配的表单定位与提取
浅谈网页制作中表单的教学
基于系统调用的恶意软件检测技术研究
基于三阶段DEA—Malmquist模型的中国省域城镇化效率测度及其收敛分析
利用RFC技术实现SAP系统接口通信
动态表单技术在教学管理中的应用*