《第9章 嵌入式Web环境的设置.ppt》由会员分享,可在线阅读,更多相关《第9章 嵌入式Web环境的设置.ppt(38页珍藏版)》请在优知文库上搜索。
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 服务器仅需提供一些静态页面,例如简单的在线帮助、系统介绍等,完全可以用静态服务器htt
3、pd来实现。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服务器,CGI 脚
5、本通过标准输入STDIN获得输入信息,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。由于用户能传递不同的参数给CGI 脚本,所以CGI技术使得浏览器和服务器之间具有很强交互性。9.1 Linux环境下Web 服务器 9.1.2 eb动态服务的流程目前实现动态Web页面有多种技术可供选择,CGI、ASP、PHP等技术在高端平台上都能很好地实现用户所需的功能。但在嵌入式Linux环境下实现动态网页,目前只能采用CGI。使用CGI需要一个输入界面,一般就是一个包含了表单的页面FORM。FORM在CGI中是最常被使用的输入界面,它由一组标签所组成,目前的标准中,F
6、ORM的标签可分为三大类:INPUT、SELECT以及TEXTAREA。在设置了一系列有关的标签后,每个FORM通常需要一个SUBMIT按钮用来发送表单内容。当用户在客户端按下FORM上的SUBMIT按钮,浏览器(Browser)将客户端输入的参数传回服务器,服务器启动指定的程序并将封装的参数传入,后台程序依照传入的参数完成指定的工作。如果此时有需要传回结果的话,则程序会把结果传回给服务器并发送到浏览器。9.2 基于thttpd动态服务器的实现过程.下载服务器软件下载地址:http:/ home#tar zxvf thttpd-2.25b.tar.gzrootlocalhost home#cd
7、 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.conf参数rootlo
9、calhost 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.2.181:/hom
10、e/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-2.25b#cp./
11、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存放网页的根目录路径#chroot#屏蔽chroot
12、是为了运行动态编译的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进行,具体过程如下:.下载服务器软件下载地址:http:/www.boa.
13、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)#./configure9.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大小为240K左右(3)#arm-linux-
14、strip boa去除调试信息,减小体积,此时的boa大小为60K左右.修改配置文件boa.confrootlocalhost boa-0.94.13#vim boa.conf配置内容如下:(1)#监听的端口号,缺省都是80,一般无需修改Port 809.3 Linux环境下基于Boa的动态服务器实现(2)#bind调用的IP地址,一般注释掉,表明绑定到INADDR_ANY,通配于服务器的所有IP地址(3)#Listen 192.68.0.5(4)#作为哪个用户运行,即他拥有该用户的权限,一般都是nobody,需要/etc/passwd中有nobody用户User nobody(5)#作为哪个
15、用户组运行,即他拥有该用户组的权限,一般都是nogroup,需要在/etc/group文件中有nogroup组Group nogroup(6)#当服务器发生问题时发送报警的email地址,目前未用,注释掉#ServerAdmin rootlocalhost9.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运行信息,如果没有注释掉,则记录,注释掉则不记录#VerboseCGILogs9.3 Linux环境下基于Boa的动态服务器实现(10)#服务器名字ServerName (11)#是否启动虚拟主机功能,即设备能有多个网络接口,每个接口都能拥有一个虚拟的Web服务器。一般注释掉,即不必启动。#VirtualHost(12)#非常重要,HTML文件的主目录。如果没有以/开始,则表示从服务器的根路径始。DocumentRoot/var/www(13)#如果收到一个用户请求的话,在用户主目录后再增加的目录名UserDir public_html9.3 Linux环境下基于Boa的动态服务器实现(14)#HTML目录索引的文件名,也是没有用户只指明访问目录时返回的文件名DirectoryIndex