嵌入式Linux下BOA网页server的移植
***************************************************************************************************************************
作者: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官方站点
例如以下图所看到的:
BOA WebServer官网网址:http://www.boa.org/,只是好久没有更新过啦,可是针对嵌入式的网页server已经够用的啦。
四:BOA WebServer的移植
首先我们来看看BOA WebServer的文件夹架构,例如以下图所看到的:
注意的是须要细致看的文件夹是src文件夹,src文件夹的主要结构例如以下所看到的:
在配置编译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/ 文件夹下,例如以下所看到的:
从上图能够看出,SERVER_ROOT是有定义的,而且就是在defines.h文件定义的,因此无须在改动代码啦。接下来就是配置文件的改动,主要是改动Makefile文件,可是我这里改动的src文件夹下的Makefile.in文件,我这里的改动例如以下所看到的:
注意红色选中的部分都须要改动的,改动完Makefile.in文件之后,就能够编译啦,可是此时编译一定会出现错误的,例如以下所看到的的错误:
这是因为compat.h文件里的几行代码导致的,例如以下红色圈中的所看到的:
将其改动为以下所看到的,即将##取消掉就好,请看以下红色圈中的部分代码:
经过这么多的改动之后,这个时候编译是不会出错的啦,为了简化操作,我这里採用一个build.sh的脚本来执行编译的,脚本例如以下所看到的:
注意这里$INSTALL_PATH能够自定义,比方:
INSTALL_PATH=`pwd`/_install
mkdir -p $INSTALL_PATH
执行./build.sh命令之后,通过file boa 和 file boa_indexer查看是否已经stripped啦!!!到这里为止说明已经编译OK啦,至于怎样配置BOA就请到网络上去搜索吧,这里就不具体说明。
嵌入式Linux下BOA网页server的移植的更多相关文章
- 嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得
**************************************************************************************************** ...
- 嵌入式 Linux下永久生效环境变量bashrc
嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...
- 嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误
嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误 2015-05-27 14:19 184人阅读 评论(0) 收藏 举报 分类: 嵌入式(928) 一般察看函数运行时堆栈的 ...
- linux下的X server:linux图形界面原理
linux下的X server:linux图形界面原理 Moblin Core是在Gnome Mobile的平台上建立.我以前玩Linux,提交的都和图像没有关系,连Xwindows都不用启动,开 ...
- 【转】基于Qt, TUIO和TSLIB的嵌入式Linux下的多点触摸设计
这个教程描述了在嵌入式linux下使用Qt如何设置一个支持多点触摸和单点触摸的输入系统.这里假定你已经有了对应的驱动程序,驱动可以从触摸屏的厂商那里获得或者使用一个linux 内核源码中已经存在的驱动 ...
- [转帖]linux下的X server:linux图形界面原理
linux下的X server:linux图形界面原理 https://www.cnblogs.com/liangxiaofeng/p/5034912.html linux下的X server:lin ...
- Linux 下安装 Redis server
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/defonds/article/details/30047611 本文简介了 Linu ...
- 转: 嵌入式linux下usb驱动开发方法--看完少走弯路【转】
转自:http://blog.csdn.net/jimmy_1986/article/details/5838297 嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至 ...
- 嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍
**************************************************************************************************** ...
随机推荐
- http协议与web本质
当你在浏览器地址栏敲入“http://www.csdn.net/”,然后猛按回车,呈现在你面前的,将是csdn的首页了(这真是废话,你会认为这是理所当然的).作为一个开发者,尤其是web开发人员,我想 ...
- CF 552C 进制转换
http://codeforces.com/problemset/problem/552/C C. Vanya and Scales time limit per test 1 second memo ...
- 最长公共子序列python实现
最长公共子序列是动态规划基本题目,以下依照动态规划基本步骤解出来. 1.找出最优解的性质,并刻划其结构特征 序列a共同拥有m个元素,序列b共同拥有n个元素,假设a[m-1]==b[n-1],那么a[: ...
- Duanxx的C++学习: 使用类没有被定义 原因及解决方法
今天,随着C++写的神经网络算法.我发现了一个很令人费解的问题,下面的描述一般地描述,例如: 我有两个类ClassA和ClassB,它们分别有成员变量a.b; ClassA有一个函数是这种:Funct ...
- ASP.NET - 服务器控件button 先执行js 再执行后台的方法
关于button这个服务器控件,我一直想减少它向服务器提交数据.那些检测,还是在客户端实现就好了.这就需要javascript,但是我发现仅仅有javascript还是不够的.button服务器控件的 ...
- 14.8.2 Verifying File Format Compatibility 校验文件格式兼容性:
14.8.2 Verifying File Format Compatibility 校验文件格式兼容性: 14.8.2.1 Compatibility Check When InnoDB Is St ...
- 《Linux命令行与shell脚本编程大全》 第十八章 学习笔记
第十八章:初识sed和gawk 文本处理 sed编辑器 sed编辑器可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据. 它每次读取一行,用提供的编辑器命令匹配数据.按命令中指定 ...
- HDU 4691(多校第九场1006) 后缀数组
...还能多说什么. 眼角一滴翔滑过. 一直以为题意是当前串与所有之前输入的串的LCP...然后就T了一整场. 扫了一眼标程突然发现他只比较输入的串和上一个串? 我心中突然有千万匹草泥马踏过. 然后随 ...
- POJ 3017 单调队列dp
Cut the Sequence Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 8764 Accepted: 2576 ...
- Swift - 启动时的向导页(新手引导)的制作
在很多iOS产品或者一些应用版本的升级中,新手指导都是一个常用的功能,通过说明页的左右滑动,可以很清晰的展示系统的一些功能特性.制作思路如下: 1,如何检测应用是第一次登陆启动 我们可以使用NSUse ...