APP下载

嵌入式Linux环境下Web页面技术的实现

2009-12-27

现代商贸工业 2009年1期

叶 欣

摘 要:介绍了通用网关接口(CGI)技术的工作原理,并选用Boa Server作为Web服务器,给出嵌入式Linux环境下的Web服务器参数配置方法,并利用该方法在S3C2410硬件开发板中实现了具体的Boa服务器环境,给出了一个具体的CGI应用实例。

关键词:嵌入式WEB;通用网关接口 ;Boa ;Web服务器

中图分类号:TP文献标识码:A文章编号:1672-3198(2009)01-0356-01お

1 通用网关接口技术

CGI(Common Gateway Interface)是实现Web页面技术的关键所在,其定义是Web服务器与外部应用程序之间通信的标准接口。与专用编程接口相比具有以下优点:

①独立于服务器体系结构和编程语言。编程者可以自由选择适合于特定编程任务的语言。

②提供完整的进程隔离机制。CGI程序独立于Web服务器,运行在自己的进程地址空间,只与服务器交换接口信息,从而保证了服务器免受出错CGI进程的影响和用户的有意试探,提高了安全性和稳定性。

CGI主要功能是在Web环境下,将WWW与Web数据库集成在一起,顺利地实现了动态Web页面查询。从用户端浏览器传递一些指令或参数给Web服务器,CGI 脚本通过标准输入STDIN获得输入信息,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。由于用户能传递不同的参数给CGI 脚本,所以CGI技术使得浏览器和服务器之间具有很强交互性。

其具体工作过程如图1所示。

其中,CGI与表单之间的信息交互方法有两种模式:“GET”和“POST” 。选择哪一种模式取决于表单(FORM)的“METHOD”字段的设置,如果METHOD 设定为POST,数据会以STDIN 方式送入CGI接口;如果METHOD 设定为GET,数据会保存在QUERY_STRING的环境参数中,以供接口读取。 使用GET方式编写CGI 程序会更加简单,但是POST 方式则更先进。

2 运行环境

根据CGI 的工作机理,在嵌入式系统中构建CGI运行环境需要解决下面几个主要工作:

(1) 软硬件平台: ARM处理器,以高性能、低功耗、低成本等优点获得大量。操作系统方面,Linux因其开源性、可裁剪,广泛支持ARM体系结构,备受亲睐。无疑本文采用ARM-Linux作为CGI的系统平台是很好的选择。

(2) 合适的Web服务器:目前的主流Web服务器,包括Apache ,httpd ,thttpd 和Boa等几种。其中Boa开放源代码,性能高,运行所需空间仅为140KB左右,对CGI的支持效果最佳。因此,本文选择Boa作为ARM-Linux系统的Web服务器。

(3) 运行环境配置:不同的Web服务器的配置方法大同小异,具体过程中需要考虑的因素有:CGI的默认启动路径配置,CGI服务器根路径(SERVER-ROOT) 配置,CGI 脚本路径动态参数配置,CGI 源码路径配置。

(4) 交叉编译生成目标机模块:在宿主机中完成了全部的配置工作后,需要利用特定平台的交叉编译工具来生成特定平台的交叉编译模块,然后再下载到目标机。

3 Web服务器Boa在ARM-Linux平台上的构建

选用ARM-Linux平台作为嵌入式系统CGI,在S3C2410开发板上构建Boa服务器的具体过程为:

3.1 对Boa源码进行交叉编译

此过程中需要在/boa/src/configure文件中添加CC与CPP交叉编译选项,同时还要对Makefile文件中CC与CPP选项做同样的改动。在Redhat虚拟操作系统下:CC=/opt/host/ armv4l/bin/armv4l-unknown-linux-gcc;CPP =/opt/host/armv4l/bin/armv4l-unknown-linux.cpp,然后make即可生成所需平台的Boa可执行文件。

3.2 Boa的配置

Boa的配置是在boa.conf文件里进行设定,该文件是一个文本文件,由一些规则组成,用于配置Boa 服务器时指定相应接口、服务器名称、一些相关文件路径等。对其具体修改如下:

①将User nobody改为User 0

②将Group nogroup 改为Group 0

③将DocumentRoot/var/www改为DocumentRoot/home/httpd/html

④定义CGI 程序所在的目录:ScriptAlias/cgi2bin/home/httpd/cgi2bin/ ⑤定义默认页面文件,配置后的Boa服务器将/home/ httpd 作为服务器的根目录,CGI 程序放在/home/httpd/cgi2bin目录下,静态网页文件放在/home/ httpd/html 目录下

接着将生成的Boa 可执行文件加入到ramdisk中的/bin/下,并把修改后的boa. conf拷贝到Web服务器根目录/home/httpd/下。

3.3 重新編译内核

将编译好的内核下载到开发板,启动Boa Web Server,然后就可以通过IE浏览器在用户端访问目标板中的网页。

4 应用实例

本文整个测试环境由一个S3C2410嵌入式开发板 ,一台Windows PC机组成,一个人用来获取数据的读写器组成,搭建了ARM9平台上的CGI运行环境,并举出了利用IE浏览器访问开发板上的RFID标签数据库,实现对RFID标签数据的嵌入式动态Web查询的应用实例。测试环境如图2所示。

在测试时,配置IP 分别为192.168.10.1,192.168.10.2。开发板和宿主机之间通过网线连接.通过浏览器点击192.168.10.1,并设置相关参数,就可以查询到原始的标签数据列表。测试结果如图3所示。

5 结语

本文对嵌入式Linux环境下的Web服务及CGI的工作机理进行了分析,提出了在嵌入式ARM-Linux环境下Boa Server 的实现方法,使用户在浏览器端对指定的嵌入式设备进行远程操作。虽然不同的嵌入式系统往往会选用不同硬件平台以及操作系统,但是对于嵌入式系统环境下CGI脚本的开发方法和Web服务器的构建,本文都给出了一个较好的思路。

参考文献

[1]@黄光奇.CGI编程指南[M].电子工业出版社,1999.

[2]@马晓光.组建Linux服务器[M].人民邮电出版社,2001,(4).

[3]@张斌,高波. Linux平台下的Web 编程[M].清华大学出版社,2000,(10).

[4]@王刚,陈西宏.基于Linux的动态Web技术研究[J].计算机应用研究, 2001,(9).

[5]@薛军超. MySQL网络数据库开发[M].人民邮电出版社,2001,(4).

[6]@张曦煌,柴志雷.嵌入式Web服务器中CGI的特点及实现.小型微型计算机系统,2003,(2).