APP下载

小型Web服务器Boa的移植与验证

2016-02-23管华庆

计算机技术与发展 2016年2期
关键词:浏览器进程网页

管华庆

(南京邮电大学 通信与信息工程学院,江苏 南京 210000)

小型Web服务器Boa的移植与验证

管华庆

(南京邮电大学 通信与信息工程学院,江苏 南京 210000)

现代通信技术和计算机技术都迎来了显著的发展,各个应用领域都要求将可移动设备接入网络。这就要求构建嵌入式Web服务器,让用户可以接入服务器进行数据共享和相互通信。嵌入式Web服务器具有许多优点,如:结构简单、功能低等。把嵌入式设备接入互联网可以实现方便、实时地通过网络监控设备的工作状态,再将数据以直观、形象的网页方式显示在PC、PDA、Phone等设备上,不需要专门的应用软件。文中便携式通信地球站监控系统使用的是ARM9系列芯片,在控制板硬件之上移植Linux操作系统,系统上移植合适的应用层Web服务器。系统采用的是Boa服务器。它是一种B/S(浏览器/服务器)的架构方式,用户在终端上打开浏览器输入网址访问已构建的嵌入式Web服务器,就可以对设备进行方便、实时、简便的监控。

便携式卫星通信地球站;嵌入式Web服务器;B/S架构;Boa

0 引 言

随着互联网[1]的不断发展和广泛应用,人们获取信息的主要方式也变成网页的形式,网页呈现的内容不但品种繁多,而且绚丽多彩。这种方式正是平时所说的B/S(浏览器/服务器)模式。客户通过任意一款浏览器,比如:IE、Firefox、360等,在地址栏输入URL(统一资源定位符)后连上服务器,提供Web服务的服务器就会将存储在本地的资源发送给客户端。客户端服务器之间的交互必须遵循一定的协议规则,比如:Http、TCP/IP等。

目前,这种应用广泛的Web服务器[2]模式和美观的网页设计技术也在嵌入式系统中得到了广泛的发展,比如:对工业控制设备、仪器仪表、家用电器进行实时监控[3]。嵌入式Web服务器本质上是一种驻留在某类嵌入式设备上的应用层程序,它可以完成如下工作:运行守护进程,网络环境的初始化,端口监听,等待客户请求,处理请求,存储数据,响应请求内容,等等。

嵌入式Web服务器[4]种类繁多:Lighttpd、Apache、Goahead、Http、Thttpd和Boa。考虑到嵌入式系统资源、运行能力等的限制,文中系统采用Boa服务器作为系统的Web服务器。

Boa代码量少,可执行代码仅61.3 kB,支持身份认证和动态网页CGI,功能全面,稳定,适用性强,安全性高。Boa服务器是一种单任务的Web服务器,它不能并发处理多个用户请求进程,只能按照请求队列中排队的顺序,逐个响应。

1 Web服务器Boa的工作流程

守护进程是指一种独立于任何终端控制的运行在系统后台的特殊进程。它能每隔一定周期执行特定任务或者某类事情发生后触发其运行。Boa[5]通过服务器守护进程实现与客户端之间的交互。守护进程的启动方式有两种:一种是在Linux启动脚本文件/rtc/rcS.d中增加代码:./var/www/boa在系统启动时自动运行;另一种是在终端上用户根据需要启动输入代码:./var/www/boa。

服务器守护进程启动之后首先进行网络环境参数的初始化工作。之后Boa服务器进程一直处于运行状态,并创建套接字,创建好套接字后的进程将会一直监听80端口是否有来自客户端的请求。客户端发起一个请求,要求建立一个到服务器80端口的TCP链接,Boa服务器[6]接收HTTP请求,并将获得的全部请求数据保存在request的结构体队列中。由于Boa是一种单任务、单进程的迭代式服务器,对于客户端多个、连续的请求都会按照先进先出的原则存储在请求队列中,而不会像并发服务器一样创建新的进程来处理客户端请求,而本身仍然处于监听状态。

Boa只能处理单任务、单进程的服务器,它每次从request队列[7]中取出一个请求,创建相应的进程,根据request数据结构中请求的不同状态进行相应处理。对于符合HTTP协议的请求,Boa返回404错误;对于符合协议的请求,Boa将头部信息提取,完成环境变量的设置,查看环境变量中is_cgi位的值。如果该位值为0说明客户端请求的是服务器本地存储的静态网页,服务器不做处理,读取本地文件作为响应返回;该位上的值非0表示CGI程序,Boa服务器必须读取环境变量中的数据,根据数据值在自身运行CGI程序,将程序的输出组织成文件,作为最终响应文件给客户端。

Web服务器工作流程见图1。

2 Boa服务器的搭建

按顺序执行以下几步完成Boa服务器的移植过程:

1)完成Boa程序的移植[8]。

(1)首先登录Boa的官方网址http://www.boa.org下载“boa-0.94.13”版本。

(2)解压压缩包:#tar zxvf boa-0.94.13.tar.gz。

(3)修改源码并交叉编译。

图1 Web服务器工作流程

进入源码目录的src子目录。

#cd Boa-0.94.13/src

生成Makefile文件

#./config

修改Makefile文件,找到:CC=gcc和CPP=gcc-E,然后分别改成:

CC=arm-linux-gcc

CPP=arm-linux-gcc-E

#vimMakefile

修改boa.c文件,将225行、226行和227行的代码注释掉

#vimboa.c

修改compat.h文件,将120行修改为

#define TIMEZONE_OFFSET(foo)(foo)

->tm_gmtoff

#vimcompat.h

修改config.c文件,注释掉266行到286行

#vimconfig.c

接着修改log.c文件,注释掉72、73、和74行

#vimlog.c

保存文件并退出后进行编译。命令:

#Make

编译之后会在源文件目录下生成可执行文件“boa”。接着将可执行文件复制到服务器设备系统的/var/www目录下,同时在文件系统的/etc/下建立子目录,把配置文件boa.cof拷贝到此目录下,命令为:

#cp boa/var/www

#mkdir /etc/boa

#cpboa.conf /etc/boa

(4)创建日志文件目录。

#mkdir /var/log/

2)修改boa的配置文件boa.Conf。

(1)修改服务器的配置文件[9]。

#cd /etc/boa

#vimboa.conf

将111行代码改为:

DocumentRoot /var/www 即规定文件主目录为/var/www

将193行代码改为:

ScriptAlias /cgi-bin /var/www/cgi-bin

这是起别名的方法,/var/www/cgi-bin和/cgi-bin/现在指的是同一个文件夹。只要在浏览器中输入/cgi-bin/就可以访问板子上的实际路径

将194行增加一行代码:

ScriptAlias index.html /var/www/html

/index.html 相应的起别名方法,即规定测试目录的虚拟路径的别名

(2)配置文件boa.conf的其他内容都可以按照其原先内容保持不变。

3)最后必须编写相应的静态HTML和CGI脚本程序,并放入/var/www/cgi-bin/文件夹下,通过浏览器测试移植是否成功完成。

3 系统平台介绍

文中系统为一个便携式卫星通信地球站监控系统的Web监控系统,包括监控终端、传输网络、Web服务器、数据处理单元、数据库等几个功能模块[10]。

监控终端采用PC或者PAD等移动设备,设备上的浏览器工作于TCP/IP协议的应用层,使用HTTP协议进行通信。它可以向服务器发送监控命令或者从服务器获得地球站的状态;数据传输部分可以采用两种方式。如果监控终端采用的是PC机,可以用一根网线将服务器和客户端连接起来,实现点对点通信方式。另一方面如果采用的是移动终端,如:PAD或者Phone等,也可以安装无线射频模块组建自己的局域网,通过Wifi进行通信;数据处理模块采用AT91SAM9260微处理器[11],其主要功能是运行CGI程序和伺服控制程序,为了实现浏览器和服务器之间的动态网页交互方式,如何设计出准确、快速地处理客户端发来的请求数据的CGI程序是该系统的关键,而这也依赖于主控芯片的硬件处理能力。最后的数据库部分,作为一个系统,为了防止来自外部的恶意修改,必须有验证系统登录身份的功能,这些身份数据就存储在数据库中,当然其中还有一些对星的参数。文中系统采用SQlite轻型数据库[12],CGI程序利用它提供的API函数完成数据库的查询、插入和修改等常用功能。

系统工作流程见图2。

图2 系统工作流程

4 网页设计技术简介

客户机和服务器之间交互的载体是网页。网页中不但可以有文字,而且可以插入图片,甚至能将视频文件嵌入网页中。网页给用户带来了愉快的用户体验。

该系统采用的主要网页设计技术有:CGI程序设计、HTML、JavaScript脚本语言和CSS等方式。这些综合起来就是人们常用的Ajax技术。CGI又叫做通用网关接口[13],CGI程序是一种运行在服务器端的动态程序。它能够代替服务器来读取数据库的数据。如果没有CGI,一个Web服务器只能给用户提供静态网页。有了CGI标准,程序员编写主页文件时可以将数据发送到服务器,服务器利用外部扩展程序来对数据进行处理,处理之后的程序以网页的方式保存,供用户访问。Ajax编程技巧也是一种常用的对Web网页的局部内容进行动态刷新的技术。JavaScript脚本首先创建一个XMLHttpRequest对象,这个对象经过初始化之后,执行它的send()方法通过post或者GET方式向服务器端的CGI程序发送请求,CGI程序处理数据之后又将最后的结果发送给客户端的JavaScript脚本程序,脚本将数据重新写入到网页上面相应的控件里,这样就实现了网页的局部刷新,免去从服务器获得整个网页。CSS[14]技术主要针对页面的布局,设计出美观、整洁的网页,提供给用户更加友好的交互。

5 测试Web服务器Boa

文中以下为静态网页测试。

5.1 测试环境的相关说明

编写测试代码index.html。在PC上使用交叉编译器编译源程序后放入上小节指定的文件夹/var/www/cgi-bin/。用户使用网线将一台PC机和便携式卫星通信地球站控制板互联。必须确保控制板和试验用PC机处于同一个网段,所以设置PC机的IP地址为10.10.150.174,子网掩码设置为255.255.255.0,便携式卫星控制地球站的IP地址设置为10.10.150.180。最后打开PC机的浏览器输入以下网址:http://10.10.150.180,看是否出现需要的网页。

5.2 测试用例与测试现象

#include

int mian()

{

printf(“Content-type:text/html ”);

printf(“ ”);

printf(“Text ”);

printf(“ ”);

printf(“ ”);

printf(“

” );

printf(“HELLO WORLD! ” );

printf(“

” );

printf(“<ody> ”);

printf(“ ”);

return 0;

}

由于ARM板资源有限,必须在PC机上将源文件进行交叉编译成在Linux系统下的文件,最后将编译好的文件放到开发板的/var/www/cgi-bin目录下。相关代码如下:

#arm-linux-gcc -o hello.cgi hello.c

#cp hello.cgi /var/www/cgi-bin/

浏览器中输入网址:

http://10.10.150.180/cgi-bin/hello.cgi

即可看到如图3所示的网页。

图3 结果验证图

6 结束语

文中基于AT91SAM9260型号的微处理器ARM9主控板[10],完成Web服务器的移植,实现在PC上以网页的方式访问主控制板上服务器中的资源。最后通过一段简单的CGI程序测试能否正常工作,结果表明该服务器工作时间持久,工作性能稳定,控制方便。文中介绍的移植方法可以给其他服务器的移植提供有价值的参考。

[1] 王兴著.Linux网络服务器应用教程[M].北京:清华大学出版社,2007.

[2] 徐春艳.嵌入式WEB服务器的研究与实现[D].南京:南京理工大学,2008.

[3] 谢新民,丁 峰.自适应控制系统[M].北京:清华大学出版社,2006.

[4] 吕 鑫.基于ARM和Linux嵌入式Web服务器的设计[D].大庆:大庆石油学院,2008.

[5] 张 勤.Linux服务器配置全程实录[M].北京:人民邮电出版社,2010.

[6] 吴玉成,侯良伟,冷建筑.嵌入式Linux下WEB服务器的设计与实现[J].数据通信,2008(6):43-46.

[7] 王丽娜.卫星通信系统[M].北京:国防工业出版社,2006.

[8] Stevens W R,Rago S A.Advanced programming in the UNIX environment[M].Beijing:Posts and Telecom Press,2006.

[9] Helstrom C W.Statistical theory of signal detection[M].Oxford:Pergamon Press,1996.

[10] 吴士力.嵌入式Linux应用开发全程解析与实战[M].北京:机械工业出版社,2010.

[11] INTELSAT SSOG 210.Earthstation verification tests[S].2000.

[12] Agilent Technologies.User’s/programmer’s reference[M].USA:Agilent Technologies,2006.

[13] Kraus J D,Marhefka R J.Antennas:for all applications[M].New York:New McGraw-Hill,2001.

[14] Bridge W M.Cross coupling in a five horn monopulse tracking system[J].IEEE Transactions on Antennas AKD Propaqation,1972,AP-20(4):437-442.

Transplantation and Verification of Embedded Web Server Boa

GUAN Hua-qing

(College of Telecommunications and Information Engineering,Nanjing University of Posts and Telecommunications,Nanjing 210000,China)

With the development of computer technology and modern communication technology,the device is connected to the network which is available to the general requirements of modern mobile terminals.Compared with the Internet Web applications,the embedded Web server has the advantages of simple structure and low functional requirements.The embedded devices connected to the Internet makes operating state to be easily monitored in real-time through of the network.Then the data can be vividly and intuitively displayed on PC,PDA,Phone and other equipments.Users do not need special application software.This portable communication earth station monitoring system is porting embedded Linux operating system on ARM9 chip.The appropriate application layer Web server on this system is installed,the system uses the Boa server,which is based on B/S structure mode,and user opens a browser on your terminal server to access Web pages stored in the satellite communication earth station,bringing real-time,portable monitor to the user.

portable satellite communication earth station;embedded Web server;B/S structure;Boa

2015-05-12

2015-08-14

时间:2016-01-26

国家自然科学基金资助项目(61271234)作者简介:管华庆(1990-),女,硕士研究生,研究方向为卫星通信技术。

http://www.cnki.net/kcms/detail/61.1450.TP.20160126.1517.032.html

TP39

A

1673-629X(2016)02-0128-04

10.3969/j.issn.1673-629X.2016.02.029

猜你喜欢

浏览器进程网页
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
反浏览器指纹追踪
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
环球浏览器
网页制作在英语教学中的应用
社会进程中的新闻学探寻
俄罗斯现代化进程的阻碍