嵌入式Linux下BOA网页server的移植

时间:2023-03-08 21:58:49

***************************************************************************************************************************

作者:EasyWave                                                       时间:2014.09.28

类别:Linux应用-网页serverBOA WebServer       声明:转载,请保留链接

注意:如有错误,欢迎指正。这些是我学习的日志文章......

***************************************************************************************************************************

一:BOA WebServer简单介绍

BOA WebServer是一款单任务的HTTPserver,与其它网页server不同之处,是当有连接请求到来是,它既不是为每一个连接都单独创建进程,也不是採用复制自身进程处理多链接,而是通过建立HTTP请求列表来处理多路HTTP连接请求,同一时候它仅仅为CGI程序创建新的简称,在最大程度上节省了系统资源,这对于资源受限的嵌入式系统来说非常重要,同一时候它还自己主动生成文件夹、自己主动解压文件等功能,因此BOA具有非常高的HTTP请求处理速度和效率,应用在嵌入式系统中具有非常高的价值,同一时候假设想要BOA支持ASP,就须要将ASP服务组件移植到BOA中,我有看到一个路由器上做了一个定制化的ASPserver。假设朋友们有兴趣能够将ASP移植到BOA中,这里就不具体介绍ASP的移植啦。

二:BOA WebServer的功能

嵌入式网页serverBOA完毕的功能包含接收client请求、分析请求、响应请求、向client返回请求处理的结果等,其工作流程例如以下:

  • 修正BOA WebServerserver的根文件夹
  • 读配置文件(boa.conf)
  • 写日志文件
  • 初始化网页server,包含创建环境变量、创建TCP套接字、绑定port、開始侦听、进入循环结构,以及等待和接收客户的连接请求
  • 当client一连接请求到达时,网页server负责接收client请求,并保存相关请求信息
  • 收到client的连接请求之后,网页server分析client请求,解析出请求的方法、URL目标、可选的查询信息以及表单信息,同一时候依据client的请求做出对应的处理
  • 网页server处理玩client的请求后,向client发送响应信息,最后关闭与client的TCP连接

三:BOA WebServer官方站点

例如以下图所看到的:

嵌入式Linux下BOA网页server的移植

BOA WebServer官网网址:http://www.boa.org/,只是好久没有更新过啦,可是针对嵌入式的网页server已经够用的啦。

四:BOA WebServer的移植

首先我们来看看BOA WebServer的文件夹架构,例如以下图所看到的:

嵌入式Linux下BOA网页server的移植

注意的是须要细致看的文件夹是src文件夹,src文件夹的主要结构例如以下所看到的:

嵌入式Linux下BOA网页server的移植

在配置编译BOA WebServer之前,须要改动几个地方才干够的,否则会出现无法编译,而且会出错,首先须要检查Host PC Linux下是否有安装bison和flex,假设没有安装的话,採用例如以下的命令来安装,例如以下所看到的:

             sudo apt-get install bison

             sudo apt-get install flex

其次须要改动的地方是SERVER_ROOT,看是否有这个宏定义,假设有就不须要改动啦,怎样没有就改动它就好啦,这是由于boa.conf文件必须放在SERVER_ROOT文件夹下,也就是/etc/boa/ 文件夹下,例如以下所看到的:

嵌入式Linux下BOA网页server的移植

从上图能够看出,SERVER_ROOT是有定义的,而且就是在defines.h文件定义的,因此无须在改动代码啦。接下来就是配置文件的改动,主要是改动Makefile文件,可是我这里改动的src文件夹下的Makefile.in文件,我这里的改动例如以下所看到的:

嵌入式Linux下BOA网页server的移植

注意红色选中的部分都须要改动的,改动完Makefile.in文件之后,就能够编译啦,可是此时编译一定会出现错误的,例如以下所看到的的错误:

嵌入式Linux下BOA网页server的移植

这是因为compat.h文件里的几行代码导致的,例如以下红色圈中的所看到的:

嵌入式Linux下BOA网页server的移植

将其改动为以下所看到的,即将##取消掉就好,请看以下红色圈中的部分代码:

嵌入式Linux下BOA网页server的移植

经过这么多的改动之后,这个时候编译是不会出错的啦,为了简化操作,我这里採用一个build.sh的脚本来执行编译的,脚本例如以下所看到的:

嵌入式Linux下BOA网页server的移植

注意这里$INSTALL_PATH能够自定义,比方:

         INSTALL_PATH=`pwd`/_install

         mkdir -p $INSTALL_PATH

嵌入式Linux下BOA网页server的移植

执行./build.sh命令之后,通过file boa 和 file boa_indexer查看是否已经stripped啦!!!到这里为止说明已经编译OK啦,至于怎样配置BOA就请到网络上去搜索吧,这里就不具体说明。