嵌入式Linux下基于CGI的动态Web的实现
嵌入式Web服务器的实现及其CGI应用

Ke r s e e d d w b s r e ;S t d;e e d d d mo b a d;C ;C C y wo d : mb d e e e r ht v p mb d e e o r GI GI
王 俊 ,郭 书军
( 方 工 业 大 学 信 息工 程 学 院 ,北 京 1 o4 ) 北 0 lJ 4
摘 要 :嵌 入 式 设 备 资 源有 限 , 这 种 情 况 下 实现 We 在 b服 务 功 能 比较 困难 。 针 对 嵌 入 式 设 备 这种 特 点 , 文 通 过 比较 本 几种 We b服 务 器 的 优 缺 点 , 定 了 S t d作 为嵌 入 式 We 选 ht p b服 务 器 , 对 其 在 Ln x嵌入 式 平 台下 进 行 了移 植 。 文 中 并 i u 详 细 解析 了 C I 术 的 相 关 原 理 , 结合 H ML表 单 和 C I 术 , 出 了用 C语 言编 写 的基 于 C I G技 并 T G技 给 G C库 的 串 口程 序 ,
( oeeo n r ai n i eig N r hn n esyo Tc nl y B in 0 14 C i ) C lg f m t nE gn r , ot C i U i ri f ehoo , e ig104 , hn l fI o o e n h a v t g j a
l rr a ie ,whc o ie i i ayw sgv n b ih cmbn d wt HTML fr n GItc n lg , e iigd n mi nea t i ewen tecin h msa d C h oo o e y ra zn y a citrci t b t e l t l 21 .
基于linux的web服务器的设计与实现

Linux系统 可 以使用虚 拟机 安装 ,不需 要安装 物理 机上 。使虚 拟 机 安装 linux系 统 ,操 作 简单 ,通 过虚拟 机 软件 ,你 可 以在一 台物 理 计 算机上模拟 出一 台或多 台虚拟 的计算机 ,这些虚 拟机完 全就像真 正 的计 算机那样 进行工作 ,例如你 可 以安装 操作系统 、安装 应用程序 、 访 问 网络 资源 等 ,省 去 了物 理机 安装 的麻烦 工 作 。使 用VMware在 电脑上虚拟 一 台计算机 ,安装 各种系 统 ,例  ̄fllinux、unix、mac以及 Windows等系统 ,对 虚拟设计 设置 内存 、硬盘容量 、IP地址 等。Linux 操作系 统软件包不仅包括 完整的Linux操作 系统 ,而且还 包括 了文本编 辑器 、高级语 言编译器等 应用软件 。它还包 括带有 多个窗 口管理器 的 X.Windows图形用户界 面,如同我们使用Windows NT一样 ,允许我们 使用窗 口、图标和菜单对系 统进 行操作 。
A bstract: Linux is a free combination and the spread of f ree operating system , Is the world popular programm er design and Realization of,
Its pur口ose is to establish a without any com m ercial SOftw are copyright restrictions, N OW Linux global hit, w ith the potential to com pete
ELECTRONICS WORLD ·探 索 与 观 察
基于CGI的嵌入式远程控制系统

Ab t a t An e e d d rmoe c n r l y tm a e n B S mod i d sg d T e man rs a c o tn s i — s r c : mb d e e t o t se b s d o / l s e ie . h i e e r h c n e t n o s c e c n t c i g a mb d e e e v r i l me t g t e i tr c o s b t e s r i r ws r e d a d hd o sr t e e d d W b S r e . mp e n i n e a t n ewe n u e n b o e n u n n n h i n h r w r n s r e , e eo i g a CGIh r wa e c n r la p i a o rg a a s rn y tm e u i , d c m- ad ae i v r d v lpn e ad r o t p l t n p o r m, u i g s s o ci s e sc r y a o t n p ei g t e i tr c v y a c o e t g i tr c . lt ne t e d n mi p ri ne f e n h a i a n a
r n d相对 比较 复杂 和庞大 。B a 一个单 任务 的 I p ' h o是 HIP服务器 , r T I 源代码开放 、 性能高 、 体积很小 , 非常适 合于做嵌人式系统的 We e e J o 服务器在接 bSr r 。B a v¨ 收到请求时 , 不起动多个服务进程来处理多个请求 , 而 在一个进程内处理所有服务请求 。对 于 C I G 程序 , 将 生 成新 的进 程来 处 理 。本 设 计 所 使用 的 I h u x nx的源 C 码 包 中 已 经 包 含 B a包 , 了 在 嵌 人 式 系 统 中实 现 o 为 B a bSr r需要对 B a o e e, We v o 做一些配置和修改。
物联网智能家居解决方案-智能家居远程监控系统的解决方案

物联网智能家居解决方案-智能家居远程监控系统的解决方案智能家居又称为数字家庭,一般是指以计算机接口技术和网络技术为基础,将各种家用数字化设备有机结合为一体的智能化的网络系统。
这些家用数字化设备包括电话、计算机、数字化的视听设备、数字化的家用电器及安全监控设备等,通过有线或无线的方式将这些设备连接起来,为家庭用户提供简单、安全、可靠、智能化的综合服务。
本文以Web技术为核心,在基于S3C2440微处理器和嵌入式Linux操作系统的软硬件平台上构建了Web服务器和视频服务器,Web服务器采用Boa,视频服务器采用Servfox,结合CGI技术处理HTML表单,完成用户认证,门窗控制等家居监控功能。
1 系统总体结构设计图1为智能家居远程监控系统的总体结构图。
室内部分主要包括家电控制、防盗报警、远程监控、防火报警等功能模块,这些功能模块通过Web服务器接入Internet网,用户可通过计算机登录因特网,远程监控室内情况,同时室内如检测到火、盗等异常情况可通过Internet向用户报警。
2 系统硬件设计智能家居远程监控系统的硬件系统由YC2440-F开发板、网络接口、门窗控制、照明设备、温度传感器、USB摄像头等组成。
YC2440-F 开发板作为整个系统的控制核心,负责信息的采集和处理,并控制各个模块协调工作,如图2所示。
控制核心采用YC2440-F开发板。
该开发板是扬创科技公司使用三星S3C2440处理器开发的ARM9开发板。
YC2440-F开发板采用核心板+扩展板的结构。
门窗控制模块可以让用户通过互联网远程控制室内门窗的开启与关闭,如有人以非正常方式通过门窗进入室内,可向用户报警。
在实验中选用一个步进电机来模拟门窗控制,电机正转表示门窗开启,电机反转表示门窗关闭,步进电机如强行被破坏则报警。
步进电机通过集成芯片ULN2003驱动,门窗控制电路如图3所示。
照明控制模块可以让用户通过互联网远程控制室内照明系统的打开与关闭。
嵌入式ARM_Linux环境下CGI的实现

文章编号:100424353(2006)0420259205嵌入式ARM 2Linux 环境下CGI 的实现金顺燕, 张健民, 李允俊(延边大学工学院计算机科学与技术系,吉林延吉133002)摘要:为满足交互式动态CGI 技术在嵌入式系统中的需要,选用Boa Server 作为Web 服务器,给出适合ARM 2Linux 环境下的Web 服务器参数配置方法.并利用该方法在S3C2410硬件开发板中实现了具体的Boa 服务器环境,CGI 应用实例.通过该实例验证了在嵌入式ARM 2Linux 环境下Boa 服务器可以正常为CGI 应用提供服务.关键词:嵌入式Linux ;CGI ;Boa中图分类号:TP273 文献标识码:A随着嵌入式系统的广泛应用,形态各异的嵌入式系统已经成为数字时代的标志,相应的嵌入式产品也越来越多.再加上Internet 的普及,各种各样的嵌入式设备都可以上网并通过网络实现对嵌入式设备的远程控制.目前,嵌入式系统下CGI 的实现方法多数都是基于uClinux 系统[1]下,本文以S3C2410开发板作为平台提出了基于ARM 2Linux 系统的CGI 的实现方法,使用户通过一个更加人性化的人机界面对指定的嵌入式设备进行远程操作,大大简化了远程控制嵌入式设备的开发难度.1 CGI 概述CGI (C ommon G ateway Interface )通用网关接口是一个外部应用与信息服务器(如HTTP 或Web 服务器)之间的标准接口[2].其主要功能是在Web 环境下,从客户端传递一些信息给Web 服务器,CGI 脚本通过标准输入STDIN 从Web 服务器得到输入信息,最后使用STDOU T 输出HTML 形式的结果文件,经Web 服务器送回浏览器显示给用户.由于用户能传递不同的参数给CGI 脚本,所以CGI 技术使得浏览器和服务器之间具有交互性.其工作过程[2]如图1所示.其中,CGI 与表单之间的信息交互方法有两种模式:“GET ”和“POST ”[3].选择哪图1 CGI 工作原理图一种模式取决于表单(FORM )的“M ETHOD ”字段的设置,如果M ETHOD 设定为POST ,数据会以STDIN 方式送入CGI接口;如果M ETHOD 设定为GET ,数据会保存在QU ER Y -STRIN G 的环境参数中,以供接口读取.使用GET 方式编写第32卷 第4期2006年12月 延边大学学报(自然科学版)Journal of Yanbian University (Natural Science ) Vol.32No.4 Dec.2006收稿日期:2006-03-28作者简介:金顺燕(1978—),女(朝鲜族),吉林柳河人,延边大学工学院计算机科学与技术系硕士研究生.062延边大学学报(自然科学版)第32卷 CGI程序会更加简单,但是POST方式则更先进.2 构建嵌入式CGI的实现思路根据CGI的工作机理,在嵌入式系统中构建CGI运行环境需要解决下面几个主要工作:1)选择嵌入式系统的操作系统平台.在嵌入式系统中,操作系统的性能对整个应用的实时性和稳定性有重要的影响.嵌入式系统的核心部件是各种类型的嵌入式处理器,ARM 作为一种嵌入式系统处理器,支持Thumb(16位)/ARM(32位)双指令集,以高性能、低功耗、低成本等优点占领了大部分市场.嵌入式Linux[4]广泛支持ARM体系结构,具有稳定性,可应用于多种不同硬件平台,其最大的特点是开放源码,可裁剪,具有丰富的软件支持和良好的网络支持,从而降低了整个系统的开销与能耗,满足了嵌入式系统在体积、功能、能耗、实时性等方面的要求.本文选用支持ARM2Linux作为CGI的系统平台.2)选择合适的Web服务器.CGI的工作过程中,服务器性能以及所占空间,在不同系统应用和需求方面都是考虑的主要因素.目前有很多功能强大的Web服务器,主要包括Apache,httpd,thttpd和Boa[5]等几种.其中httpd最小,只需几千字节的空间,功能简单,但不支持CGI;Apache,thttpd和Boa支持CGI,从对CGI支持的性能指标[6]可知,Boa对CGI 的支持效果最佳.Boa开放源代码,性能高,速度快,运行所需空间仅为140K B左右.Boa与其他Web服务器相比主要有以下几个优点:①对CGI程序无需设置REMO TE-HOST环境变量,在REMO TE-ADDR变量中已经提供了IP地址,可以直接使用gethostbyaddr函数或变量,从而使Boa较其他Web服务器更易于使用;②在Boa中对Server2side模块可以剪裁,以提高系统运行速度,其内部的“字节流执行引擎”采用了非完全的图灵机方式实现;③不存在访问控制特征,采用符号连接方式进行控制,可以对任何可以读取的文件提供服务,因此速度更快.因此,本文选择Boa作为嵌入式Linux系统的Web服务器.3)运行环境配置.选择了合适的Web服务器之后,还需要对其进行满足应用要求的合理配置,不同的Web服务器的配置方法大同小异,具体过程中需要考虑的因素有:CGI的默认启动路径配置,CGI服务器根路径(SERV ER-ROO T)配置,CGI脚本路径动态参数配置, CGI源码路径配置.4)交叉编译生成目标机模块.嵌入式系统往往采用交叉编译的环境,因此,CGI运行环境的搭建工作也是遵循这个原则.在宿主机中完成了全部的配置工作后,需要利用特定平台的交叉编译工具来生成特定平台的交叉编译模块,然后再下载到目标机.3 Boa Server在ARM2Linux平台上的实现选用ARM2Linux平台作为嵌入式系统CGI,在嵌入式Linux环境下构建Boa服务器的具体方法为:Ⅰ)对Boa源码进行交叉编译,生成可执行文件Boa.在此过程中需要在/boa/src/configure 文件中加入CC与CPP相关交叉编译选项,同时还要对Makefile文件中CC与CPP选项做同样的改动.在一般的操作系统下:CC=/opt/host/armv4l/bin/armv4l2unknown2linux2gcc; CPP=/opt/host/armv4l/bin/armv4l2unknown2linux2cpp,然后make即可生成所需平台的Boa.Ⅱ)动态配置Web Server Boa.1)修改/boa/src/define.h 文件.在此文件中指定SERV ER -ROO T ,使用户在访问Web 时服务器能确定根目录的位置.还可以在目标板中通过命令行来指定该路径,且命令行所指定的路径具有更高的优先级,即命令行指定的SERV ER -ROO T 可以覆盖defines.h 文件所指定的.具体方法是:#define SERV ER -ROO T “/home/httpd ”或boa 2c/home/httpd/&.2)修改boa.conf 文件.该文件是一个文本文件,由一些规则组成,用于配置Boa 服务器时指定相应接口、服务器名称、一些相关文件路径等.Boa 服务器正确运行的前提是必须保证boa.conf 文件的正确配置.对其具体修改如下:①将User nobody 改为User 0;②将Group nogroup 改为Group 0;③将Document Root/var/www 改为Document Root/home/httpd/html ;④定义CGI 程序所在的目录:ScriptAlias/cgi 2bin//home/httpd/cgi 2bin/;⑤定义默认页面文件ScriptAlias/index.html//home/httpd/html/index.html.这样配置后的Boa 服务器将/home/httpd 作为服务器的根目录,CGI 程序放在/home/httpd/cgi 2bin 目录下,静态网页文件放在/home/httpd/html 目录下.3)将生成的Boa 可执行文件加入到ramdisk 中的/bin/下,并把修改后的boa.conf 拷贝到Web 服务器根目录/home/httpd/下.4)建目录.由于默认的根文件系统ramdisk 是只读的,不能用mkdir 等命令来创建新目录,所以在编译内核前先建好要用到的目录.5)重新编译内核,将编译好的内核下载到开发板,启动Boa Web Server ,然后就可以通过IE 在主机端访问目标板中的网页.4 应用实例本文的硬件环境是以S3C2410微处理器为核心开发板,板中集成Samsung 公司推出的S3C2410处理器.该处理器具有低功效、高性能、体积小、高集成度、高性价比等优点,可装载和运行嵌入式Linux 操作系统,其最显著特征是其CPU 核心是由ARM 公司设计的203MHz 的ARM920T 内核,它实现了MMU ,AMBA BUS 和Harvard 高速缓冲体系结构.针对该硬件环境,采用上述提出的嵌入式Linux 环境下Boa 服务器的实现方法,搭建了基于三星S3C2410的ARM9平台上的CGI 运行环境,并采用C 语言开发出一套Web/CGI 图2 开发配置连接图示管理系统.该系统实现了通过IE 来访问开发板,并通过点击相应功能演示菜单来管理开发板(例如修改开发板IP ,设置系统时间等).1)开发时系统连接图及其IP 分配如图2所示.整个开发系统由一个S3C2410开发板,一台安装Linux 操作系统的宿主机,一台Windows PC 机组成,通过HUB 构成一个局域网,配置IP 分别为192.168.2.120,192.168.2.25,192.168.2.26,开发板和宿主机之间通过串口线连接.162 第4期金顺燕,等:嵌入式ARM 2Linux 环境下CGI 的实现262延边大学学报(自然科学版)第32卷 2)Web/CGI管理系统概要流程为:①在宿主机上启动minicom作为目标板的仿真终端,执行mount2o nolock192.168.2.25:/cgi2bin/home/httpd/cgi2bin;②在宿主机上修改完cgi程序,执行make进行交叉编译,在Windows PC机上用IE输入192.168.2.120测试修改结果是否正确;③通过调试后,将最终定版的ramdisk.image.gz抄写到板子上,则可以通过IE控制开发板.3)以“设置IP”为例,编写一个showsetip()函数用来动态生成一个设置IP的页面,真正的IP设置是用户在这个页面上点击“确认”后调用一个setip()函数.程序框架代码如下: int main(int argc,char3argv[]){ …… ∥根据函数功能码,调用相应功能函数 ∥显示设置IP界面 if strcmp(string.stringout[0],″49″)==0) showsetip(); ∥提交IP设置请求,完成具体IP设置 else if(strcmp(string.stringout[0],″48″)==0) setip(); …… } int showsetip(){ …… <form method=get action=/cgi2bin/config.cgi> <!22数据采用get方式传递给CGI程序∥22> <!22服务器使用QU ER Y-STRIN G的环境变量来接受数据∥22> <input type=hidden name=flag value=48checked> <!22指定用户点击确认后的处理命令码为48∥22> …… } int setip(){ …… querystring=getenv(“QU ER Y-STRIN G”); splitedstring=splitstring(querystring,′&′); …… fp=fopen(″/jffs2/etc/ipset″,″w″); snprintf(stringtowrite,100,″route add default gw%s″,splitedstring.stringout[3]); fprintf(fp,″%s\n″,stringtowrite); fclose(fp); …… }Web/CGI管理界面如图3所示.图3 Web/CGI 管理界面5 结束语本文对嵌入式Linux 环境下的Web 服务及CGI 的工作机理进行了分析,提出了在嵌入式ARM 2Linux 环境下Boa Web Server 的实现方法,使用户在浏览器端对指定的嵌入式设备进行远程操作.虽然不同的嵌入式系统往往会选用不同硬件平台以及操作系统,但是对于嵌入式系统环境下Web 服务环境的构建和动态交互CGI 脚本的开发方法,本文都给出了一个较好的思路.用户可以根据不同应用需求,选取合适的Web 服务器,采用该方法来构建CGI 环境.参考文献:[1] 刘国梅,郑安平.uClinux 下动态Web 技术的实现方法[J ].单片机与嵌入式系统应用,2004(2):67269.[2] James Marshall.CGI Made Really Easy[EB/OL ]/easy/cgi/,2002-04.[3] 张曦煌,柴志雷.嵌入式Web 服务器中CGI 的特点及实现[J ].小型微型计算机系统,2003,24(11):46248.[4] 刘峥嵘,张智超,许振山.嵌入式Linux 应用开发详解[M ].北京:机械工业出版社,2004.6.[5] Larry Doolittle ,Jon Nelson.Boa Webserver[EB/OL ].http :///documentation/,2003-02.[6] Web Server Comparisons[EB/OL ].http :///software/thttpd/benchmarks.html ,1998-07.Implementation of CGI in ARM 2Linux embedded environmentJ IN Shun 2yan , ZHAN G Jian 2min , L I Yun 2jun(Depart ment of Com puter Science and Technology ,College of Engineering ,Yanbian U niversity ,Yanji 133002,China )Abstract :In order to satisfy the needs for the interactive dynamic CGI technology in embedded system ,this paper develops a method to configure the parameters for a Boa Web server under the embedded ARM 2Linux environment.A Boa server environment is actualized in the S3C2410hardware development board using this method.Finally ,an example is given to illustrate this method.Therefore ,according to the different de 2mands ,the user can select an appropriate Web server and construct the CGI environment using this method.K ey w ords :embedded Linux ;CGI ;Boa 362 第4期金顺燕,等:嵌入式ARM 2Linux 环境下CGI 的实现。
基于ARM9的嵌入式Web服务器数据动态显示的实现

基于ARM9的嵌入式Web服务器数据动态显示的实现作者:陈侃松刘洪波熊攀来源:《物联网技术》2014年第03期摘要:随着无线传感网络的迅猛发展,将嵌入式系统接入互联网已成为无线传感网络研究中的热点,其中通过访问嵌入式服务器网页实现采集数据的动态显示是一个技术难点。
文中采用DS18B20温度传感器采集温度,在嵌入式网关搭建ARM-Linux开发平台;然后移植BOA服务器;同时利用CGI程序、Ajax技术及HTML语言,在上位机通过访问嵌入式网关,从而实现了对传感器节点采集的温度数据在网页中的动态显示。
实际应用表明,该系统消耗CPU资源少,可减轻服务器负担,而且无需刷新页面更新数据,因而可减少用户实际等待的时间。
关键词:嵌入式服务器;ARM-Linux;CGI;Ajax;动态显示中图分类号:TP311 文献标识码:A 文章编号:2095-1302(2014)03-0018-020 引言当今,以互联网为标志的嵌入式系统正处于一个飞速发展的阶段。
嵌入式系统接入Internet后,相当于一个功能齐全的小型Web服务器,用户在上位机打开浏览器,通过Internet 即可获取该Web服务器上的数据信息,从而实现了对现场信息的远程监控,而且这种基于HTML语言标准化的Web用户界面降低了系统开发、维护以及人员培训的费用[1]。
对于无线传感网络来说,可将嵌入式网关作为Web服务器,用户在上位机通过Internet访问网页的方式获取下位机传感器节点采集的数据。
基于此,本系统采用DS18B20温度传感器和ZigBee[2]无线通信模块构成无线传感网络,以ARM9作为核心处理器搭建嵌入式Web服务器Boa和嵌入式数据库SQLite,采用C语言、HTML语言、JavaScript程序、CGI程序、Ajax 技术,实现了对远端传感器节点采集信息的处理、存储及在网页上的动态显示。
1 系统硬件整体设计本系统的硬件主要由3部分组成:上位机PC端、嵌入式网关(ARM9)和ZigBee无线网络,系统的整体设计框图如图1所示。
在嵌入式Linux系统中实现基于Web的配置管理

统 的 功 能模 块 包 括 验 证 用 户 身 份 , 设置 上 网 方 式 、 由 、 H P 路 D C 服 务 、 全 规 则 等 , 可 以 显 示路 由 器 的 运 行 状 态 以 利 于 监 控 。 安 还 系 统 的 功 能 模块 及 涉 及 的 相 关 配 置 文 件 如 图 1 示 。 所
考虑到路由器的基本功能宽带接入方式soho模式家庭或小型办公用模式对共享ip上网的要求及网络安全等多方因素该系统的功能模块包括验证用户身份设置上网方式路由dhcp服务安全规则等还可以显示路由器的运行状态以利于监控
维普资讯
在嵌入式 Ln x系统中实现基于 We iu b的配置管理
【 基本网络
1 配置文件
一
一
一
一
dcd hp
Байду номын сангаас
配置文件I
1
1 系统 结构
本 文 示 例 系 统 采 用 华 邦 的 W9 N 4 0 7 0微 控 制 器 作 为 核 心 ,
有 两 片 S R M 和一 片 F A H,两 个 网 E和 一 个 调 试 用 串 E , D A LS l l 0 S为 u l u 。系统 中采 用 u l u Ci x n Ci x提供 的嵌 入 式 We n b服 务器 ba 负 责 监 听 、 收 和分 析 用 户请 求 , 送 静 态 页 面 和 调 用 后 o, 接 传 台 C I 序 。C I 序 根 据 用 户 请 求 修 改 、 存 应 用 程 序 配 置 G 程 G程 保 文 件 或 读 取 配 置 文 件 信 息 。将 运 行 结 果 反 馈 给 We b服 务 器 并 回送 到 客 户 端 浏览 器 , 而 实 现 基 于 W e 从 b的 配 置 管理 。考 虑 到 路 由器 的 基本 功 能 、 带 接 人 方 式 、O O 模 式 ( 庭 或 小 型 办 宽 SH 家 公用模式 ) 共享 I 对 P上 网 的 要 求 及 网 络 安 全 等 多方 因 素 。 系 该
Linux下嵌入式动态Web技术设计实现

家居系统 中, 以通过智能终端设 备如 : 可 掌上电脑等 , 实 现对信息家 电的远程控制, 信息家 电也可 以根据需要 自 动 将 设备运行 的状 态信 息发送给 设定 的 目标 对象 , 而 且, 通过 嵌入式动态 We 技术 , b 信息家 电还可 以实现对
It t n me 的访 问, e 收发 E M i等 功 能 。 — a l
摘 要 :文章给 出了嵌入式动 态 We b技术 的设 计和 实现方案 。该 方案 对基 于 A M9和 Lnx的嵌入式 We R iu b S re 系统的软硬 件体 系结构进行 了详 细的阐述 , evr 实现 了嵌入式动态 We 技 术。 以利用 N t aeFr o b 可 e cp ,i f s e x等浏览
维普资讯
第 2 卷 第 3期 1
20 0 8年 6月
四 川理 工 学院 学报 ( 自然科 学版 )
J OURNAL OF S CHUAN I UNI VER Y SI r OF
V0. . 1 21No3
S IN E & E I E I CE C NG NE R NG( A UR L S I NC DT O N T A CE E E II N、
都是 用 汇 编 语 言实 现 的 。其 兼 容 性 、 用 性及 扩 展性 都 通
1嵌入 式动态 W b技 术 e
随着计 算机 技术和现代通信技术 的不断发展 , 设 “ 备即 网络 ” 是后 P C时代对嵌入式系统 的客观要 求。嵌 入式动态 We b技术的核心任 务是 :在互连 的嵌入式 设
关 键 词 :嵌 入 式技 术 ; R Ln x B aWe e e A M; iu ; o bS r r v
中 图分 类 号 :m 1 1 68 文 献 标 识 码 :A
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0引言
由于嵌入式操作系统的巨大商业价值和Linux的开放性, 嵌入式Linux的开发和研究已经成为目前操作系统领域的一个 热点。
嵌入式Linux(Embedded Linux)是指将标准Linux经过小 型化裁剪处理之后,固化在容量只有几K或者几M字节的存储 器芯片或者单片机中,适合于特定嵌入式应用场合的专用 Linux操作系统。嵌入式Linux既是Internet上的开放源代码资 源,又具有嵌入式操作系统的特性。
#endif
然后依次执行./configure,make。 由此得到可执行程序Boa。将调试信息剥去后,得到的最 后程序只有约60KB大小。 1.2 Web Server Boa的配置 移植后需对Boa进行配置。先把dir/boa目录下的boa.conf 文件复制到SERVER_ROOT目录下(如上文中的”/etc/boa”),然 后再对boa配置文件(boa.conf)中的参数进行配置。 重要参数的配置如下: Port 80 PWeb服务器的默认端口号是80*/ User nobody,+服务器运行的用户名或者用户ID号。, Group nobody,+服务器运行的组名或者组ID号., ErrorLog Ivadloglboalerrorlog,+错误日志文件及存放路径., AccessLog Ivarlloglboalaccess_log,.访问日志文件及存放路径., SewerName 192.168.1.109广用于客户访问的服务器名称:域名 或者IP地址., DocumentRoot/home/httpd/html,‘存放HTML文档的根目录‘, ScdptAlias/cgi—bin/Ihomelhttpdlcgi—bin/,.指定脚本文件的存放 路径,在Web服务器接收到客户端请求时,此目录下的相应脚本 文件可以自动执行.,
Implementation of Dynamic Web Based on CGI under Embedded Linux’
CHEN Hong—mei,CHEN Jing。LI Xue—dong (Commanding Communication Academy,Wuhan,Hubei 430010,China) Abstract:In order to realize dynamic Web effectively in embedded system which has limited resources,a solution is presented.R achieves dynamic Web pages by using Boa as Web Sel'Vgr and doing CGI programming in C language under embedded Linux.The test result proves the correctness and effectiveness of this solution. Key words:embedded Linux;Boa;CGI;CGIC
·4·
Computer Era No.4 2010
嵌入式Li n ux下基于CG I的动态Web的实现
陈红梅。陈静,李雪冬
(通信指挥学院,湖北武汉430010)
摘要:为在资源有限的嵌入式系统中有效地实现动态Web,文章提出了一种解决方案:在嵌入式Linux操作系统下,采 用Boa作为Web服务器,用C语言进行CGI程序设计,完成动态Web页面的实现。测试结果证明了该方案的正确性和有 效性。 关键词:嵌入式Linux;Boa;CGI;CGIC
</fonll>
客户端用户单击提交按钮之后,此清求通过WebIt臣务器发
j鼢CGI程序out.c百。
该CGI程序的主要代码如下:
#include。cgic.h。
int cgiMain(){ char name【241]; cgiHeaderContentType(”text/html。): ,.输出HTMI头部(声明文档类型)., fprinff(cgiOut,。<HTML><BODY>、n'); ,.参.数cgiOut常相当于CGI程序的标准输出(stdout);CGI程 序输出HTML页面的方式是用输出函数把页面一行一行地打 印出来t,
.
cgiFormString(。name。。name,241); ,.荻取表单中输入框的值,赋给字符串name;cgiFormStrin90是
CGIC提供的用于荻取输入参数值的一族函数中最常用的一个., fprinff(cgiOut.。<H1>%s<,H1y,name); 广把字符串name的值,即上面取得的表单值输出在HTML页面中., fprinff(cgiOut,"</BODY>/HTML>、n。): return 0: )
上述交互过程可以用图1表示。
图l CGI技术工作流程
3嵌入式Linux下动态Web页面的实现 CGI程序可以用任何程序设计语言编写,如Shell脚本语
言、Perl、PHP、Fortran、Pascal、C语言等。由于C语言在平台无 关性上的优秀表现,以及C语言设计的CGI程序编泽为二进制 后,Boa可以直接执行且文件较小,所以本文采用C语言来开发 CGI程序。 3.1 CGlC函数库
,/叭http://www.boa.org/-F载Boa源码,解压到任意目录dir。 进入dir/boa/src目录,修改defines.h文件中的SERVER_ROOT 参数值,以指定Web]]E务器的根目录路径:
#ifndef SERVER ROOT
蒯eftRe SERVER ROOT"/etc/boa。
2嵌入式Linux下实现动态Web的CGl技术 CGI(Common Gateway Interface)是外部扩展应用程序与
Web服务器交互的一个标准接口。CGI规范定义了w曲服务 器如何向扩展应用程序发送消息、在收到扩展应用程序的信 息后又如何进行处理等内容。CGI程序就是符合这种接口标 准,运行在web服务器上的程序,它可以处理客户端浏览器输 入的需要协同工作的数据,完成客户端与服务器的交互操 作。它大大扩展了Web提供的功能,丰富了网络应用。例如, 可以编写CGI程序来访问数据库,客户端可以通过CGI程序和
4结束语
本文在嵌入式Linux系统上,移植了嵌入式Web Server Boa,介绍了CGI技术的基本工作原理,并采用c编写CGI程序 实现了客户端浏览器与Web Server之间的动态数据交互。采 用这种方案实现的动态web能够高效率地运行,在远程系统管 理和监控等领域有着广泛的应用前景。
参考文献: 【1】李磊.利用CGI蔫I序实统动态Web的方法Ⅻ.科学技术与工程,2009. 【2】王伟君,月利华.囊入式Linux下基亏CGI的文件上传下栽的实现叨.
随着互联网应用的普及,越来越多的信息化产品需要接入 互联网通过Web页面进行远程访问。为此,我们结合一种嵌入 式Web Server Boa来介绍嵌入式Linux系统下的CGI程序设 计技术。
1嵌入式Linux下Web Server的实现
Boa是基于GNU/Linux平台的嵌入式web服务器,它的设 计目标是速度和安全,速度快是它最大的特点。Boa是一个单 任务web服务器,它不像传统的web服务器,并不使用fork()的 派生子进程处理并发请求,而是采用多路复用(Multiplex)技 术。初步测试显示,在一个300MHz的奔腾机上,Boa每秒可以 处理数千个采样数。Boa源代码开放、性能优秀、支持CGI,特 别适合应用在嵌入式系统中。所以本文选择Boa作为嵌入式 Linux下的Web Server。 1.1 Web Server Boa的移植
(1)对数据进行语法分析; (2)接收以GET和POST方式发送的数据; (3)接收上传文件以及常规的表单文件; (4)提供没置和取得cookies的函数; (5)用统一的方式处理表单域中的换行; (6)为提取表单数据提供字符串、整型、浮点及单选和多选 函数,为数字字段执行边界检查; (7)把CGI环境变量处理为非空字串加载到c字符串中; (8)提供捕获CGI状态进行凋试的方法。 3.2利用CGIC开发CGI程序的流程 整个CGIC函数库实际上就是cgic.C一个文件,非常的精
万方数据
嵌入式Linux下基于CGI的动态Web的实现
作者: 作者单位: 刊名:
英文刊名: 年,卷(期): 引用次数:
陈红梅, 陈静, 李雪冬 通信指挥学院,湖北,武汉,430010
计算机时代 COMPUTER ERA 2010,""(4) 0次
参考文献(5条) 1.李磊.利用CGI程序实现动态Web的方法[J].科学技术与工程,2009. 2.王伟君,周利华.嵌入式Linux下基于CGI的文件上传下载的实现[J].计算机技术与发展,2006. 3.刘伟,李小武,罗明编著.CGI杖术全面接触[M].清华大学出版社,2001. 4.Boa项目官方网站点[EB/OL/]./. 5.CGIC项目官方网站点[EB/OL//cgic/.
炼。用CGIC进行C语言的CGI程序开发时,可以将CGIC编 译为模块,也可以直接将自己编写的CGI程序和cgic.C及cgic. h一起编泽。由于所有的CGI程序都必须进行一些初始化操 作,比如分析数据和检查环境变量等,所以CGIC库提供了自 己的main()。当我们用CGIC来开发自己的CGI程序时就不能 再使用main(),而只能使用CGIC提供的cgiMain0来开始自己 的程序。
计算机技术与宣展,2006. 【31重4伟,李小武,It啊鸽著.CGI杖术全面接触【M】.崎年太学出版社,
2001. 【4J Boa项口官方一站正[EB/OL/].http://www.boa.org/.
[5]CGIC 日官方一站点【EB/oM·http://wwu,·boutell.com/cgic/· 酗
c语言编程是一项复杂且容易出错的工作,所以在完成复 杂任务时,一定要选择合适的库。用c语言编写CGI程序则更 是如此。CGIC是一个支持CGI开发的开放源码的标准c库, 可以免费用,只需要在开发的站点和程序文档中有个公开声 明即可,表明程序使用了CGIC库。