关于嵌入式web服务器

1.boa的配置文件boa.conf

  

    Port 80 //服务访问端口

    User 0
    Group 0

    ErrorLog /var/log/boa/error_log //错误日志地址
    AccessLog /var/log/boa/access_log //访问日志文件

    DocumentRoot /var/www //HTML文档的主目录

    UserDir public_html //

    DirectoryIndex index.html //默认访问文件

    DirectoryMaker /usr/lib/boa/boa_indexer

    KeepAliveMax 1000 //一个连接所允许的HTTP持续作用请求最大数目

    KeepAliveTimeout 10 //HTTP持续作用中服务器在两次请求之间等待的时间数,以秒为单位

    MimeTypes /etc/mime.types //指明mime.types文件位置

    DefaultType text/plain //文件扩展名没有或未知的话,使用的缺省MIME类型

    CGIPath /bin:/usr/bin:/usr/local/bin //提供CGI程序的PATH环境变量值

    Alias /doc /usr/doc //为路径加上别名

    ScriptAlias /cgi-bin/ /var/www/cgi-bin/ //输入站点和CGI脚本位置

2.boa简介

  

BOA
========================
服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。  

是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。   

CGI
========================
在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。即客户端与服务器的接口。   

比如留言本的工作流程:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。

3.CGI简介

CGI简介:
=====================
一、概念:公共网关接口CGI(Common GatewayInterface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

在物理上,CGI是一段程序,运行在服务器上,提供同客户端HTML页面的接口。这样说大概还不好理解。

那么我们看一个实际例子:
====================================
现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。

二、功能:绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。

CGI应用程序主要的用途有以下几种:   

1.根据浏览者填写的HTML表单发送定制的答复;   

2.创建可单击的图像缩小图;   

3.创建一个浏览者可以搜索内容的数据库;   

4.提供服务器与数据库的接口,并把结果转换成HTML文档;   

5.制作动态HTML文挡。

三、处理步骤:

   ⑴通过Internet把用户请求送到服务器。
  
⑵服务器接收用户请求并交给CGI程序处理。
 
⑶CGI程序把处理结果传送给服务器。  
 
⑷服务器把结果送回到用户。

四、优点:
   CGI可以为我们提供许多HTML无法做到的功能。比如 a.一个记数器 b.顾客信息表格的提交以及统计 c.搜索程序 d.WEB数据库,用Html是没有办法记住客户的任何信息的.

用Html也是无法把信息记录到某一个特定文件里的。要把客户端的信息记录在服务器的硬盘上,就要用到CGI。这是CGI最重要的作用,它补充了Html的不足。  

使在网络服务器下运行外部分应用程序(或网关)成为可能。CGI-BIN 目录是存放CGI脚本的地方。这些脚本使WWW服务器和浏览器能运行外部程序,而无需启动另一个原因程序。

   它是运行在Web服务器上的一个程序,并由来自于浏览者的输入触发。CGI是在HTTP服务器下运行外部程序(或网关)的一个接口,它能让网络用户访问远程系统上的使用类型程序,就好像他们
在实际使用那些远程计算机一样。   

CGI能够让浏览者与服务器进行交互,如果你曾经遇到过在网络上填表或者进行搜索,就很有可能就是用的CGI。   

五、应用程序工作原理:
   1.浏览器通过HTML表单或超链接请求指上一个CGI应用程序的URL。   

2.服务器收发到请求。   

3.服务器执行指定所CGI应用程序。   

4.CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容。   

5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。   

6.网络服务器把结果返回到浏览器中。

六、注意的问题
   CGI应用程序运行在浏览器可以请求的服务器系统上,执行时需要使用服务器CPU时间和内存。如果有成千上万的这种程序会同时运行,那会对服务器系统提出极高的要求。你要慎重考虑这个问题,以防止服务器系统崩溃。   

不完善的CGI应用程序可能成为别人非法进人服务器系统的通道,有可能导致重要的资料被删除或外泄。

 4.XML简介

一、概念:
==================
XML(Extensible Markup Language),一种扩展性标识语言。"扩展性""标识""语言"。每一个词都明确的点明了XML的重要
特点和功能。我们来仔细分析:

1.扩展性---使用XML,你可以为你的文档建立自己的标记(tags)。
=================
XML的第一个词是"扩展性",这正是XML强大的功能和弹性的原因。
在HTML里,有许多固定的标记,我们必须记住然后使用它们,你不能使用HTML规范里没有的标记。而在XML中,你能建立
任何你需要的标记。你可以充分发挥你的想象力,给你的文档起一些好记的标记名称。比如,你的文档里包含一些游戏
的攻略,你可以建立一个名为<game>的标记,然后在<game>下再根据游戏类别建立<RPG>,<SLG>等标记。只要清晰,易于
理解你可以建立任何数量的标记。

2.标识---使用XML你可以识别文档中的元素。
=================
XML的第二个词是"标识",这表明了XML的目的是标识文档中的元素。

不论你是HTML,还是XML,标识的本质在于便于理解,如果没有标识,你的文档在计算机看来只是一个很长的字符串,每个
字看起来都一样,没有重点之分。 通过标识,你的文档才便于阅读和理解,你可以划分段落,列明标题。XML中,你更
可以利用其扩展性 来为文档建立更合适的标识。

<b>frist step<b>
这里<b>表示粗体,只用来说明是用粗体来显示"frist step"字符,<b>本身并不包含任何实际的信息,在页面上你看不
到<b>,真正传达信息的是"frist step "。

3.语言---使用XML你要遵循特定的语法来标识你的文档。
=================
XML第三个词是"语言"。这表明了作为一种语言XML必须遵循一定的规则。虽然XML的扩展性允许你创建新标识,但它仍然
必须遵循特定的结构,语法和明确的定义。

在计算机领域,语言常常用来编程实现一些功能和应用,但不是所有的"语言"都是用来编程的,XML就只是一种用来定义
标识和描述信息的语言。

二.xml结构化---XML促使文档结构化,所有的信息按某种关系排列。
====================
"结构化"听起来太抽象了,我们这样理解,结构化就是为你的文档建立一个框架,就象写文章先写一个提纲。结构化使
你的文档看起来不会杂乱无章,每一部分都紧密联系,形成一个整体。

结构化有两个原则:
1.每一部分(每一个元素)都和其他元素有关联。关联的级数就形成了结构。
2.标识本身的含义与它描述的信息相分离。

我们来看一个简单的例子帮助理解:
<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML轻松学习手册</title>
<chapter>XML快速入门
<para>什么是XML</para>
<para>使用XML的好处</para>
</chapter>
<chapter>XML的概念
<para>扩展性</para>
<para>标识</para>
</chapter>
</myfile>
这是本文的XML描述文档,可以看到标识分三级关联,非常清晰:
<myfile>
<chapter>
<para>
...
</para>
</chapter>
</myfile>
上面这样的文档结构,我们又称之为"文档树",主干是父元素,如<myfile>,分支和页是子元素,如<chapter>和<para>。

三、xml的好处
==================
使用XML有什么好处?来看w3c组织(XML标准制定者)的说明:

XML使得在网络上使用SGML语言更加"简单和直接": 简化了定义文件类型的过程,简化了编程和处理SGML文件的过程,
简化了在Web上的传送和共享。

1.XML可以广泛的运用于web的任何地方;
2.XML可以满足网络应用的需求;
3.使用XML将使编程更加简单;
4.XML便于学习和创建;
5.XML代码将清晰和便于阅读理解;

四、xml实例分析
==================
XML非常简单,学习容易。如果你熟悉HTML,你会发现它的文档和HTML非常相似,看同样的示例文档(例1):

?xml version="1.0"?><br><br>
<myfile><br><br>
<title>XML Quick Start</title><br><br>
<author>ajie</author><br><br>
<email>[email protected]</email><br><br>
<date>20010115</date><br><br>
</myfile>

第一行是一个XML声明,表示文档遵循的是XML的1.0 版的规范。

第二行定义了文档里面的第一个元素(element),也称为根元素: < myfile>。这个就类似HTML里的< HTML>开头标记。
注意,这个名称是自己随便定义的。

再下面定义了四个子元素:title,author,email,和date。分别说明文章的标题,作者,邮箱和日期。当然,你可以用
中文来定义这些标签,看上去更便于理解:

<?xml version="1.0" encoding="GB2312"?>
<文章>
<标题>XML轻松学习手册</标题>
<作者>ajie</作者>
<信箱>[email protected]</信箱>
<日期>20010115</日期>
</文章>

这就是XML的文档,任何掌握HTML的网友都可以直接写出这样简单的XML文档。

另外,学习XML还必须掌握一种页面脚本语言,常见的就是javascript和VB script。因为XML数据是使用script
实现HTML中调用和交互的。我们看一个最简单的例子(例2):

1.将下面代码存为myfile.html

<html>
<head>
<script language="Javascript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("myfile.xml");
nodes = xmlDoc.documentElement.childNodes;
title.innerText = nodesitem(0).text;
author.innerText = nodes.item(1).text;
email.innerText = nodes.item(2).text;
date.innerText = nodes.item(3).text;

</script>
<title>在HTML中调用XML数据</title>
</head>
<body bgcolor="#FFFFFF">
<b>标题: </b>
<span id="title"> </span>
<b>作者: </b>
<span id="author"></span>
<b>信箱: </b>
<span id="email"></span>
<b>日期:</b>
<span id="date"></span>
</body><br><br>
</html><br><br>

2.将下面代码存为myfile.xml

<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML轻松学习手册</title>
<author>ajie</author>
<email>[email protected]</email>
<date>20010115</date>
</myfile>

3.将它们放在同一个目录下,用IE5以上版本浏览器打开,可以看到效果。 学习并掌握一种script,你将真正了解到
XML无比的强大的功能。

五. XML和HTML的区别
==========================
XML和HTML都来自于SGML,它们都含有标记,有着相似的语法,HTML和XML的最大区别在于:HTML是一个定型的标记语言,
它用固有的标记来描述,显示网页内容。比如< H1>表示首行标题,有固定的尺寸。相对的,XML则没有固定的标记,
XML不能描述网页具体的外观,内容,它只是描述内容的数据形式和结构。

这是一个质的区别:网页将数据和显示混在一起,而XML则将数据和显示分开来。

我们看上面的例子,在myfile.htm中,我们只关心页面的显示方式,我们可以设计不同的界面,用不同的方式来排版页
面,但数据是储存在myfile.xml中,不需要任何改变。

(如果你是程序员,你会惊讶的发现,这与模块化面向对象编程的思想极其相似!其实网页何尝不是一种程序呢?)

正是这种区别使得XML在网络应用和信息共享上方便,高效,可扩展。所以我们相信,XML做为一种先进的数据处理方法,
将使网络跨越到一个新的境界。

六. XML的严格格式
=======================
吸取HTML松散格式带来的经验教训,XML一开始就坚持实行"良好的格式"。

我们先看HTML的一些语句,这些语句在HTML中随处可见:

1.
sample
2.< b>< i>sample< /b>< /i>
3.< td>sample< /TD>
4.< font color=red>samplar< /font>

在XML文档中,上述几种语句的语法都是错误的。因为:

1.所有的标记都必须要有一个相应的结束标记;
2.所有的XML标记都必须合理嵌套;
3.所有XML标记都区分大小写;
4.所有标记的属性必须用""括起来;
所以上列语句在XML中正确的写法是

1.
sample
2.< b>< i>sample< /i>< /b>
3.< td>sample< /td>
4.< font color="red">samplar< /font>

另外,XML标记必须遵循下面的命名规则:

1.名字中可以包含字母、数字以及其它字母;
2.名字不能以数字或"_" (下划线) 开头;
3.名字不能以字母 xml (或 XML 或 Xml ..) 开头;
4.名字中不能包含空格。

在XML文档中任何的差错,都会得到同一个结果:网页不能被显示。各浏览器开发商已经达成协议,对XML实行严格而
挑剔的解析,任何细小的错误都会被报告。你可以将上面的myfile.xml修改一下,比如将< email>改为< Email>,然后
用IE5直接打开myfile.xml,会得到一个出错信息页面:

<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML轻松学习手册</title>
<author>ajie</author>
<Email>[email protected]</email>
<date>20010115</date>
</myfile>

时间: 2024-10-10 00:06:09

关于嵌入式web服务器的相关文章

嵌入式web服务器

现在在嵌入式设备中所使用的web服务器主要有:boa.thttpd.mini_httpd.shttpd.lighttpd.goaheand.appweb和apache等. Boa 1.介绍 Boa诞生于1991年,作者Paul Philips.是开源的,应用很广泛,特别适合于嵌入式设备,网上流行程度很广.它的官方网站说boa是最受人喜爱的嵌入式web服务器.功能较为强大,支持认证,cgi等.Boa 是一个单任务的HTTP SERVER,它不像传统的web服务器那样为每个访问连接开启一个进程,也不

实验五(简单嵌入式WEB服务器实验)问题总结

实验五问题总结 问题链接:<信息安全系统设计基础>实验五实验报告 虽然将07_httpd文件中全部拷贝进了bc中,文件夹中拥有Makefile文件,但是还是无法通过make得到该文件夹中copy和httpd的可执行文件.解决:第一次是觉得Makefile文件中的PATH路径不对,将其改成了/home/bc/07_httpd存盘退出后发现还是无法执行,第二次我们直接使用gcc对其单步进行编译:armv4l-unknow-linux-gcc –E copy.c –o copy.iarmv4l-un

信息安全系统设计基础实验五:简单嵌入式 WEB 服务器实验 (20135229,20135234)

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计                         班级:1352 姓名:马启扬 吕松鸿     学号:20135234 20135229 成绩:             指导教师:娄嘉鹏      实验日期:2015.11  实验密级:       预习程度:               实验时间:15:30—17:00  仪器组次:       必修/选修:必修        实验序号:05    实验

三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记

一:移植Boa(web服务器)到嵌入式Linux系统 一.Boa程序的移植 1.下载Boa源码    下载地址: http://www.boa.org/    目前最新发行版本: 0.94.13   (几年没更新版本了)    下载 boa-0.94.13.tar.gz, 注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式一样    解压: 2.生成Makefile文件   进入boa-0.94.13,直接运行src/configure文件 [[email protect

实验5 简单嵌入式WEB服务器实验 实验报告 20135303 20135326

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                班级:  1353 姓名:20135303 魏昊卿 学号:20135326 王亦可 成绩:             指导教师: 娄嘉鹏             实验日期:2015.12.03 实验密级:         预习程度:                     实验时间:15:30~18:00 仪器组次:          必修/选修:必修          

Java使用Jetty实现嵌入式Web服务器及Servlet容器

首先来介绍下 Jetty,根据 wiki 的介绍: Jetty 是一个纯粹的基于 Java 的网页服务器和 Java Servlet 容器.尽管网页服务器通常用来为人们呈现文档,但是 Jetty 通常在较大的软件框架中用于计算机与计算机之间的通信. Jetty 作为 Eclipse 基金会的一部分,是一个自由和开源项目.该网页服务器被用在 Apache ActiveMQ.Alfresco.Apache Geronimo.Apache Maven.Google App Engine.Eclipse

Atitit.嵌入式web 服务器 java android最佳实践

1. Android4.4.21 2. 自己的webserver1 3. CyberHTTP for Java  cybergarage6 1. Android4.4.2  First使用jetty9,三说jdk编译级别非常高的... i-jetty 就是jetty6的apk版本..马用.. 使用jetty6 ,三,jpg都ok....大的文件就jetty.io.EofException..找到资料没法儿解除...放弃..jetty6 的bug应该.. 子好自己实现web  server兰...

第5章 Web服务器

1.Web服务器有不同的形式:可以在计算机系统上安装并运行通用的软件Web服务器:一台Web服务器设备:或是在少量计算机芯片上实现嵌入式Web服务器. 2.第一步--接收客户端连接 客户端请求一条到Web服务器的TCP连接时,Web服务器会建立连接,判断连接的另一端是哪个客户端,从TCP连接中将IP地址解析出来. 3.第二步--接收请求报文 连接上有数据到达时,Web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来. 单线程的Web服务器以此只处理一个请求,直到其完成为止.可以采用多线

web服务器/cgi/html/css/js

随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S架构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和监控,非常方便实用.本节主要介绍这种应用的开发和移植工作. Web 典型的嵌入式Web服务器有Boa (www.boa.org)和thttpd (http://www.acme.com/software/thttpd/)等,