第9章 嵌入式Web环境的设置.ppt

上传人:文库蛋蛋多 文档编号:2668917 上传时间:2023-02-21 格式:PPT 页数:39 大小:851KB
返回 下载 相关 举报
第9章 嵌入式Web环境的设置.ppt_第1页
第1页 / 共39页
第9章 嵌入式Web环境的设置.ppt_第2页
第2页 / 共39页
第9章 嵌入式Web环境的设置.ppt_第3页
第3页 / 共39页
第9章 嵌入式Web环境的设置.ppt_第4页
第4页 / 共39页
第9章 嵌入式Web环境的设置.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第9章 嵌入式Web环境的设置.ppt》由会员分享,可在线阅读,更多相关《第9章 嵌入式Web环境的设置.ppt(39页珍藏版)》请在三一办公上搜索。

1、第9章 嵌入式Web环境的设置,本章重点,通用网关接口(CGI)技术的工作原理thttpd服务器。Boa服务器。,本章内容,9.1 Linux环境下Web 服务器9.2 Linux环境下基于thttpd动态服务器的实现过程9.3 Linux环境下基于Boa的动态服务器实现9.4 用DMF实现搭建动态Web 服务器,9.1 Linux环境下Web 服务器,嵌入式系统已经大量应用于各种场合,网络技术的发展使嵌入式系统的网络功能日益完善。在测控领域里,常常需要远程查询被测控对象的实时状态,或进行某种控制操作,采用服务器浏览器进行工作的嵌入式系统,可以仅通过浏览器就完成所有的测控任务而不依赖于其他客户

2、端程序,具有简单网络服务器功能的嵌入式系统可以方便地提供这种功能。,9.1 Linux环境下Web 服务器,将嵌入式系统接入网络,一般是为了提供一种系统与外界交互的途径,由于网络的可扩展性,嵌入式系统一旦连接到网络中,其所能提供的信息和获得的信息都将成倍增加。为了更方便地通过网络向外提供信息,必须为系统构建Web服务器。Linux环境下的嵌入式主流Web服务器,包括Apache、httpd、thttpd 和Boa等几种。httpd是最简单的一种Web 服务器,它的功能最弱,不支持认证,不支持CGI。如果Web 服务器仅需提供一些静态页面,例如简单的在线帮助、系统介绍等,完全可以用静态服务器ht

3、tpd来实现。thttpd和Boa都支持认证、CGI等,功能都比较全。若需提高系统的安全性,或需要与用户进行交互,例如数据查询、实时状态查询等,则必须使用动态Web技术,可以选择这两种服务器之一来实现。其中Boa开放源代码、性能高,运行所需空间仅为140KB左右,对CGI的支持效果最佳。因此,在很多情况下选择Boa作为ARM-Linux系统的Web服务器。,9.1 Linux环境下Web 服务器,9.1.1 CGI通用网关接口技术CGI(Common Gate Interface)通用网关接口,是一个连接外部应用程序到服务器的标准。一个简单的静态HTML文档是没有交互后台程序,而CGI程序则可

4、以实时执行并输出动态信息。CGI是实现Web页面技术的关键所在,其定义是Web服务器与外部应用程序之间通信的标准接口。与专用编程接口相比具有以下优点:独立于服务器体系结构和编程语言。编程者可以自由选择适合于特定编程任务的语言。提供完整的进程隔离机制。CGI程序独立于Web服务器,运行在自己的进程地址空间,只与服务器交换接口信息,从而保证了服务器免受出错CGI进程的影响和用户的有意试探,提高了安全性和稳定性。,9.1 Linux环境下Web 服务器,CGI主要功能是在Web环境下,将WWW与Web数据库集成在一起,顺利地实现了动态Web页面查询。从用户端浏览器传递一些指令或参数给Web服务器,C

5、GI 脚本通过标准输入STDIN获得输入信息,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。由于用户能传递不同的参数给CGI 脚本,所以CGI技术使得浏览器和服务器之间具有很强交互性。,9.1 Linux环境下Web 服务器,9.1.2 eb动态服务的流程目前实现动态Web页面有多种技术可供选择,CGI、ASP、PHP等技术在高端平台上都能很好地实现用户所需的功能。但在嵌入式Linux环境下实现动态网页,目前只能采用CGI。使用CGI需要一个输入界面,一般就是一个包含了表单的页面FORM。FORM在CGI中是最常被使用的输入界面,它由一组标签所组成,目前的

6、标准中,FORM的标签可分为三大类:INPUT、SELECT以及TEXTAREA。在设置了一系列有关的标签后,每个FORM通常需要一个SUBMIT按钮用来发送表单内容。当用户在客户端按下FORM上的SUBMIT按钮,浏览器(Browser)将客户端输入的参数传回服务器,服务器启动指定的程序并将封装的参数传入,后台程序依照传入的参数完成指定的工作。如果此时有需要传回结果的话,则程序会把结果传回给服务器并发送到浏览器。,9.2 基于thttpd动态服务器的实现过程,.下载服务器软件下载地址:http:/home#tar zxvf thttpd-2.25b.tar.gzrootlocalhost h

7、ome#cd thttpd-2.25brootlocalhost thttpd-2.25b#./configurerootlocalhost thttpd-2.25b#vim Makefile修改内容:(1)主要把”CC=gcc”修改为”CC=arm-linux-gcc”在此交叉编译器的版本为2.95.3。,9.2 基于thttpd动态服务器的实现过程,(2)把”LDFLAGS=”设置为”LDFLAGS=-static”,表示指定静态链接二进制文件,假如你的开发板上的文件系统是jffs2文件系统,那建议此项不要设置了。因为,设置了此项后,编译出来的可执行文件比较大。当把可执行文件从宿主机拷贝到

8、开发板时,可能会提示”cp:Write Error:No space left on device”。因为采用的是jffs2文件系统,是日志文件系统,拷贝文件不能超过文件系统的容量,使用df-h可以查看容量的大小。rootlocalhost thttpd-2.25b#makerootlocalhost thttpd-2.25b#du thttpd104thttpd,9.2 基于thttpd动态服务器的实现过程,.修改配置文件权限rootlocalhost thttpd-2.25b#chmod+777 contrib/redhat-rpm/thttpd.conf.设置配置文件thttpd.con

9、f参数rootlocalhost thttpd-2.25b#vim contrib/redhat-rpm/thttpd.conf内容如下:dir=/etc/thttpd/html#指明webserver存放网页的根目录路径chrootuser=root#default=nobody#以root身份运行thttpdlogfile=/etc/thttpd/log/thttpd.log#日志文件路径pidfile=/etc/thttpd/run/thttpd.pid#pid文件路径,9.2 基于thttpd动态服务器的实现过程,.在开发板端启动eb服务在开发板上操作如下:#mount 192.168

10、.2.181:/home/mnt#cd/mnt/thttpd-2.25b/mnt/thttpd-2.25b#cp thttpd/bin/mnt/thttpd-2.25b#cp contrib/redhat-rpm/thttpd.conf/etc/mnt/thttpd-2.25b#mkdir-p/etc/thttpd/html/mnt/thttpd-2.25b#mkdir/etc/thttpd/log/mnt/thttpd-2.25b#mkdir/etc/thttpd/run/mnt/thttpd-2.25b#cp./index_1.html/etc/thttpd/html/mnt/thttpd

11、-2.25b#cp./index_2.html/etc/thttpd/html/mnt/thttpd-2.25b#thttpd-C/etc/thttpd.conf此时,服务已经启动,可以在其他PC机上,打开浏览器,并输入http:/192.168.2.120,会弹出如下图所示:,9.2 基于thttpd动态服务器的实现过程,在上图中,点击index_1.html和index_2.html分别显示如下:,9.2 基于thttpd动态服务器的实现过程,假如要支持CGI,那么thttp.conf的配置文件修改如下:dir=/etc/thttpd/html#指明webserver存放网页的根目录路径#

12、chroot#屏蔽chroot是为了运行动态编译的CGIuser=root#default=nobody#以root身份运行thttpdlogfile=/etc/thttpd/log/thttpd.log#日志文件路径pidfile=/etc/thttpd/run/thttpd.pid#pid文件路径cgipat=/cgi-bin/*声明CGI程序的目录,是以dir为根目录的路径,9.3 Linux环境下基于Boa的动态服务器实现,9.3.1 安装与配置boa用Boa来实现动态Web 服务器的方法较为复杂,主要通过boa.conf和mime.types进行,具体过程如下:.下载服务器软件下载地

13、址:http:/www.boa.org/boa-0.94.13.tar.gz.安装Boa(1)#tar xvzf boa-0.94.13.tar.gz(2)#cd boa-0.94.13/src(3)#./configure,9.3 Linux环境下基于Boa的动态服务器实现,.生成Makefile文件(1)#vim Makefile修改Makefile文件,找到CC=gcc,将其改成CC=arm-linux-gcc(注:此为交叉编译器2.95.3),再找到CPP=gcc-E,将其改成CPP=arm-linux-gcc-E,并保存退出。(2)#make编译生成可执行文件.此时的boa大小为24

14、0K左右(3)#arm-linux-strip boa去除调试信息,减小体积,此时的boa大小为60K左右.修改配置文件boa.confrootlocalhost boa-0.94.13#vim boa.conf配置内容如下:(1)#监听的端口号,缺省都是80,一般无需修改Port 80,9.3 Linux环境下基于Boa的动态服务器实现,(2)#bind调用的IP地址,一般注释掉,表明绑定到INADDR_ANY,通配于服务器的所有IP地址(3)#Listen 192.68.0.5(4)#作为哪个用户运行,即他拥有该用户的权限,一般都是nobody,需要/etc/passwd中有nobody用

15、户User nobody(5)#作为哪个用户组运行,即他拥有该用户组的权限,一般都是nogroup,需要在/etc/group文件中有nogroup组Group nogroup(6)#当服务器发生问题时发送报警的email地址,目前未用,注释掉#ServerAdmin rootlocalhost,9.3 Linux环境下基于Boa的动态服务器实现,(7)#错误日志文件。如果没有以/开始,则表示从服务器的根路径开始。如果不必错误日志,则用#/dev/null。在下面设置时,注意一定要建立/var/log/boa目录ErrorLog/var/log/boa/error_log#访问日志文件。如果没

16、有以/开始,则表示从服务器的根路径开始。如果不必错误日志,则用#/dev/null或直接注释掉。在下面设置时,注意一定要建立/var/log/boa目录#AccessLog/var/log/boa/access_log(8)#是否使用本地时间。如果没有注释掉,则使用本地时间。注释掉则使用UTC时间#UseLocaltime(9)#是否记录CGI运行信息,如果没有注释掉,则记录,注释掉则不记录#VerboseCGILogs,9.3 Linux环境下基于Boa的动态服务器实现,(10)#服务器名字ServerName(11)#是否启动虚拟主机功能,即设备能有多个网络接口,每个接口都能拥有一个虚拟的

17、Web服务器。一般注释掉,即不必启动。#VirtualHost(12)#非常重要,HTML文件的主目录。如果没有以/开始,则表示从服务器的根路径始。DocumentRoot/var/www(13)#如果收到一个用户请求的话,在用户主目录后再增加的目录名UserDir public_html,9.3 Linux环境下基于Boa的动态服务器实现,(14)#HTML目录索引的文件名,也是没有用户只指明访问目录时返回的文件名DirectoryIndex index.html(15)#当HTML目录没有索引文件时,用户只指明访问目录时,boa会调用该程式生成索引文件然后返回给用户,因为该过程比较慢最佳不

18、执行,能注释掉或给每个HTML目录加上DirectoryIndex指明的文件#DirectoryMaker/usr/lib/boa/boa_indexer(16)#如果DirectoryIndex不存在,并且DirectoryMaker被注释,那么就用Boa自带的索引生成程式来生成目录的索引文件并输出到下面目录,该目录必须是Boa能读写#DirectoryCache/var/spool/boa/dircache,9.3 Linux环境下基于Boa的动态服务器实现,(17)#一个连接所允许的HTTP持续作用请求最大数目,注释或设为0都将关闭HTTP持续作用KeepAliveMax 1000(18

19、)#HTTP持续作用中服务器在两次请求之间等待的时间数,以秒为单位,超时将关闭连接KeepAliveTimeout 10(19)#指明mime.types文件位置。如果没有以/开始,则表示从服务器的根路径开始。能注释掉避免使用mime.types文件,此时需要用AddType在本文件里指明MimeTypes/etc/mime.types(20)#文件扩展名没有或未知的话,使用的缺省MIME类型DefaultType text/plain,9.3 Linux环境下基于Boa的动态服务器实现,(21)#提供CGI程式的PATH环境变量值CGIPath/bin:/usr/bin:/usr/local

20、/bin(22)#将文件扩展名和MIME类型关联起来,和mime.types文件作用相同。如果用mime.types文件,则注释掉,如果不使用mime.types文件,则必须使用#AddType application/x-httpd-cgi cgi(23)#指明文件重定向路径#Redirect/bar http:/elsewhere/feh/bar(24)#为路径加上别名Alias/doc/usr/doc,9.3 Linux环境下基于Boa的动态服务器实现,(25)#指明CGI脚本的虚拟路径对应的实际路径。一般所有的CGI脚本都要放在实际路径里,用户访问执行时输入站点+虚拟路径+CGI脚本名

21、ScriptAlias/cgi-bin/var/www/cgi-bin/(26)修改#ServerName www.your.org.here为 ServerName www.your.org.here(27)修改 ScriptAlias/cgi-bin/usr/lib/cgi-bin/为 ScriptAlias/cgi-bin/var/www/cgi-bin/这是在设置CGI的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录,9.3 Linux环境下基于Boa的动态服务器实现,5在开发板端测试#mkdir/var/log/boa/#mkdir/var/www/#mkdir/var/w

22、ww/cgi-bin/#mkdir/etc/boa/#mount 192.168.2.181:/home/mnt#cd mnt/boa-0.94.13/mnt/boa-0.94.13#cp./mime.types/etc/(注:此mime.types文件来源于PC机/etc目录一的mime.types)/mnt/boa-0.94.13#cp src/boa/bin/,9.3 Linux环境下基于Boa的动态服务器实现,/mnt/boa-0.94.13#cp boa.conf/etc/boa/mnt/boa-0.94.13#cp./index.html/var/www/mnt/boa-0.94.

23、13#vi/etc/passwd添加一个nouser用户。/mnt/boa-0.94.13#vi/etc/group添加一个nogroup组/mnt/boa-0.94.13#/bin/boa此时,可以在宿主机(PC机)上,打开浏览器,并输入http:/192.168.2.120(为开发板的IP地址),显示如下图所示:,9.3 Linux环境下基于Boa的动态服务器实现,rootlocalhost home#arm-linux-gcc-o hello.cgi hello.c(宿主机上交叉编译)/mnt/boa-0.94.13#cp./hello.cgi/var/www/cgi-bin/此时,再打

24、开浏览器,并输入http:/192.168.2.120/cgi-bin/hello.cgi,显示如下:这样配置后的boa服务器将/home目录作为服务器的根目录,cgi程序位于honecgi-bin目录下,默认页面文件为homeindex.html。,9.3 Linux环境下基于Boa的动态服务器实现,9.3.2 动态Web页面访问远程温度传感器下面通过一个例子来说明如何实现uCLinux下的动态Web页面技术。首先建立一个简单的表单页面:输入需要访问的温度传感器号码,并单击“确定”查看。,9.3 Linux环境下基于Boa的动态服务器实现,CGI规定,GET方式下的表单被发送到服务器后,表单

25、中的数据被保存在QUERY_STRING环境变量中。这种表单的处理相对简单,只要读取环境变量就可以了。在CGI程序中使用库函数getenv来把环境变量的值作为一个字符串来读取,在取得了字符串中的数据后,就可以对数据进行需要的处理。CGI程序完成处理后的输出被重定向到客户浏览器,用户通过浏览器就可以看到相关结果。请注意,在ACTION后面所指向的CGI文件并没有扩展名。下面就是处理这个表单的CGI程序mycgi.c:#include#include int main(void)char*data;long m;printf(Content-Type:text/html%c%c,10,10);,9

26、.3 Linux环境下基于Boa的动态服务器实现,printf(温度传感器状态);printf(房间温度);data=getenv(QUERY_STRING);if(sscanf(data,m=%ld,其中的readtempr()是读取温度传感器输出的函数。在cygwin下使用arm-elf-gcc对该cgi源程序进行编译,获得mycgi.exe,将该程序复制到Linux-distromfshomecgi-bin目录下,确保前面的表单页面文件index.html位于Linux-distromfshome目录里。,9.4 用DMF实现搭建动态Web 服务器,9.4.1 Web 服务器的配置(1)

27、安装交叉编译。(2)下载web服务器软件:webs218.tar.gz。官方下载:http:/home#tar zxvf webs218.tar.gz(4)进入ws030325/LINUX 目录:rootlocalhost home#cd ws031202/rootlocalhost ws031202#cd LINUX/,9.4 用DMF实现搭建动态Web 服务器,(5)修改编译文件Makefile:1)在Makefile文件顶端添加如下两行:CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gccAR=/opt/host/armv4l/bin/armv

28、4l-unknown-linux-ar注意:增加交叉编译器arm41-unknown-linux-gcc和交叉编译归档器arm41-unknown-linux-ar2)找到Makefile 中的最后一行,把“cc-c-o$(DEBUG)$(CFLAGS)$(IFLAGS)$”修改为“$(CC)-c-o$(DEBUG)$(CFLAGS)$(IFLAGS)$”,然后保存退出。(6)修改文件main.c:1)编辑函数get_host_ip在main()函数与initWebs()函数之间(大约在127行),添加以下代码:,9.4 用DMF实现搭建动态Web 服务器,#include#include#i

29、nclude#include#include#include#include#include struct in_addr get_host_ip(void)int s;struct ifconf conf;struct ifreq*ifr;char buffBUFSIZ;int num;int i;,9.4 用DMF实现搭建动态Web 服务器,s=socket(PF_INET,SOCK_DGRAM,0);conf.ifc_len=BUFSIZ;conf.ifc_buf=buff;ioctl(s,SIOCGIFCONF,9.4 用DMF实现搭建动态Web 服务器,2)修改函数initWebs(

30、)找到static int initWebs()函数,并在此函数里添加下代码:intaddr=get_host_ip();3)注释函数initWebs一段代码rootlocalhost LINUX#vi main.c找到static int initWebs()函数,注释下面一段代码:/*if(hp=gethostbyname(host)=NULL)error(E_L,E_LOG,T(Cant get host address);fprintf(stderr,initWebs:host name%sr,host);return-1;memcpy(char*)*/,9.4 用DMF实现搭建动态W

31、eb 服务器,(7)修改访问页面的路径在函数static int websHomePageHandler(webs_t wp,char_t*urlPrefix,char_t*webDir,int arg,char_t*url,char_t*path,char_t*query)中的语句if(*url=0|gstrcmp(url,T(/)=0)websRedirect(wp,T(home.asp);return 1;把websRedirect(wp,T(“home.asp”);改为默认访问的页面。(8)编译执行make生成webs,9.4 用DMF实现搭建动态Web 服务器,9.4.2动态Web页

32、面的访问(1)新建一张网页test.html新建一张网页test.html,保存到它制定的目录。rootlocalhost LINUX#cd.rootlocalhost ws031202#cd webrootlocalhost ws031202#vi test.html网页代码如下:zb!-,9.4 用DMF实现搭建动态Web 服务器,.STYLE1 font-size:x-large;font-weight:bold;-Zhejiang University Software College,9.4 用DMF实现搭建动态Web 服务器,(2)挂载到目标板在终端使用命令minicom启动目标板,把/home目录挂载到目标板的/mnt目录下。#mount 192.168.2.122:/home/mnt/(3)执行可执行程序webs。#/mnt/ws031202/LINUX/mnt/ws031202/LINUX#./webs(4)打开浏览器打开浏览器,输入:http:/192.168.2.120/test.html,便出现了刚才编写的网页,具体如下图所示。,LUPA开源软件实训就业见习基地WWW.LUPA.GOV.CN,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号