摘 要:介绍了通用网关接口(CGI)技术的工作原理,并选用Boa Server作为Web服务器,给出嵌入式Linux环境下的Web服务器参数配置方法,并利用该方法在S3C2410硬件开发板中实现了具体的Boa服务器环境,给出了一个具体的CGI应用实例。
关键词:嵌入式WEB;通用网关接口 ;Boa ;Web服务器
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可执行文件。
[8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr /> 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).
[8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />
相关文章:
明星代言助力电视广告?04-26
建筑工程概预算控制措施的研究04-26
广播电视台实施业务通道建设的关键环节04-26
物业专项维修资金管理加强思考04-26
浅析新课标下职业高中体育教学改革04-26
浅谈知识管理在数据库课程教学活动中的应用04-26
浅析初中语文课堂教学的导入技巧04-26
房地产企业集团资金管理创新思考04-26
浅谈我国管理会计的现状及未来发展趋势04-26