嵌入式Web服务器Boa移植.ppt

合集下载

嵌入式boa服务器移植说明

嵌入式boa服务器移植说明

嵌入式boa服务器的移植——cpw806开发板:gec2410开发环境:Vmware+redflag6.0交叉编译器:arm-linux-gcc-4.3.2软件版本:linux2.6.31(内核),boa-0.94.13.tar.gz一:准备boa服务器源代码下载地址:/projects/boa/。

二:移植boa服务器1:编译boa服务器①解压#tar–zxvf boa-0.94.13.tar.gz②进入boa-0.94.13/src目录,#./configure③#修改交叉编译器路径#vi MakefileCC=gccCPP=gcc-E该为:CC=arm-linux-gccCPP=arm-linux-gcc-E④#make⑤去除调试信息#arm-linux-strip boa经4,5步之后,便在src目录下生成boa可执行文件。

编译过程中出现如下错误util.c:100:1:pasting“t”and“->”does not give a valid preprocessing token make:[util.o]Error1解决办法修改compat.h中的#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff为:#define TIMEZONE_OFFSET(foo)foo->tm_gmtoff有人说改用2.95.3版本的编译器也可以避免这个错误,本人没有试验过。

至此编译完成,此时便可生成可执行程序boa。

2:配置boa.conf文件有关boa.conf的说明文档很多,本人不再赘述,下面为有必要修改和注意的部分。

1修改User nobody为User0;2修改Group nogroup为Group0②设定日志目录:boa日志有两部分,Errorlog和AccessLog一般情况下为/var/log/boa/error_log和/var/log/boa/access_log两个文件。

嵌入式boa服务器搭建和移植

嵌入式boa服务器搭建和移植

嵌入式boa服务器搭建和移植1.先下载源码/ ==> boa-0.94.13.tar.g2.tar -xvf boa-0.94.13.tar.g3./configure4.修改MakefileCC =or32-linux-gccCPP = or32-linux-gcc–E5.修改boa.c,注释下面几行if (setuid(0) != -1) {DIE(“icky Linux kernel bug!”);}改为/*if (setuid(0) != -1) {DIE(“icky Linux kernel bug!”);}*/6.修改文件compat.h#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff7.make 编译,这时候就会生成一个boa的可执行文件boa的配置文件是boa.conf,大概的配置是这样的: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脚本位置对于调试阶段,可以把主机的目录挂载到目标板上面,这样就方便调试。

假设主机的NFS共享目录是/NFS,在NFS下面建立一个www的文件夹,然后在www的文件夹下面建立images,cig-bin目录,还有一个index.html,可以随便找一个主页就可以了。

在主机上mkdir /NFS/wwwmkdir /NFS/www/imagesmkdir /NFS/www/cgi-bincp <dir>/index.html /NFS/www/然后在板子上面建立/var/www的目录mkdir /var/wwwmount -t nfs -o nolock <主机IP>:/NFS/www /var/www //挂载目标www板子上建立日志存放目录,在板子上:mkdir /var/logmkdir /var/log/boa对于boa配置文件的移植,可以把主机上的boa.conf拷贝到主机的NFS共享目录/NFS/www 下面。

boa移植boa交叉编译

boa移植boa交叉编译

boa移植boa交叉编译BOA 服务器是⼀个⼩巧⾼效的web服务器,是⼀个运⾏于unix或linux下的,⽀持CGI的、适合于嵌⼊式系统的单任务的http服务器,源代码开放、性能⾼配置boa-0.94.13 # ./configure修改MakefileCC = arm-linux-gccCPP = arm-linux-gcc -E编译boa-0.94.13 # make出现如下错误出现错误:yacc -d boa_grammar.ymake: yacc: Command not foundmake: *** [y.tab.c] Error 127解决办法:# sudo apt-get install bison出现错误:lex boa_lexer.lmake: lex: Command not foundmake: *** [lex.yy.c] Error 127解决办法:# sudo apt-get install flex出现错误:arm-none-eabi-gcc -g -O2 -pipe -Wall -I. -c -o alias.o alias.cIn file included from alias.c:26:0:boa.h:41:19: fatal error: netdb.h: No such file or directorycompilation terminated.<builtin>: recipe for target 'alias.o' failedmake: *** [alias.o] Error 1解决办法://将交叉编译⼯具链换成gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)出现错误:arm-linux-gcc -g -O2 -pipe -Wall -I. -c -o util.o util.cutil.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing tokenmake: *** [util.o] Error 1解决办法:# vi compat.h //修改120⾏#ifdef HAVE_TM_GMTOFF#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff#else制作cgi页⾯交叉编译出⼀个cig脚本,供boa使⽤。

web服务器Boa移植手册

web服务器Boa移植手册
1
Boa服务器的移植可分成两部分,一个是在x86平台上移植,即在虚拟机的linux下,另一个是 在arm平台上移植,即在开发板上的linux下,本手册的前四步,都是在虚拟机上做移植,第五步 是移植到发开板上。
一、编译 boa 程序
1、下载boa-0.94.13.tar.gz。 2、解压 3、#./configure 4、#make 编译会出错: util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1 解决方法,修改compat.h中的 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 为: #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
3
MimeTypes /etc/mime.types 将网页文件放在/var/www 目录下,cgi 脚本放在/var/www/cgi-bin 目录下。在开发板上运行 boa, 在主机 IE 上输入开发板 IP,可看到网页。
六、常见错误
这些错误内容可查看/var/log/boa/error_log 文件 1、gethostbyname:: No such file or directory 解决办法: 修改 boa.conf 去掉 ServerName .here 前的注释符号(#)。 2、util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 解决办法: 修改 src/compat.h 找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 修改成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 3、boa.c:211 - getpwuid: No such file or directory 解决办法: 修改 src/boa.c 注释掉下面这段程序: if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } 即修改为: #if 0 if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } #endif 4、boa.c:228 - icky Linux kernel bug!: No such file or directory 解决办法: 修改 src/boa.c 注释掉下面语句: if (setuid(0) != -1) { DIE(”icky Linux kernel bug!”);

嵌入式web服务器Boa的移植实验指导

嵌入式web服务器Boa的移植实验指导
# make (注:编译前,将步骤 5 中修改源文件的部分先做完。)
然后运行 make 进行编译,这时出现如下错误: “ util.c: 100: 1: pasting “t” and “->” does not give valid preprocessing token make ”的错误 提示,。 解决办法:
若出现:
说明权限不够,给 helloworld.cgi 加上执行权。结果如下,说明基于 CGI 的 C 语言程序成功 执行。
10.从CG目录 # tar -zxvf cgic205.tar.gz # cd cgic205
7.cp mime.types 文件到开发板/etc 目录,添加用户与组如下: vi passwd,添加 root 用户,vi group 添加 root 组
(或者 vi passwd,添加 nouser 用户,vi group 添加 nogroup 组) 8.运行 boa:
现在通过其他机器就可以访问了。http://192.168.1.5 就可以访问到你放置的那个 index 页面了。 若出现如下画面:
实验八:嵌入式 web 服务器 Boa 的移植与运用
一、实验目的 学会移植 boa,利用 boa 构建 WEB 服务并支持交互。
二、实验内容 1.下载 boa 源代码并逐步生成下载用文档 2. 下载并建立 boa 运行环境 3. 运行、测试
三、实验设备及工具 软件:PC 机操作系统 Windows XP 环境、VMWARE6.0、linux 企业版 4、Source.Insight V3.5、 XManage、交叉编译软件。 四、实验步骤: 1. 从/下载Boa源码,将其解压并进入源码目录的src子目录
11.修改 Makefile 文件 a.找到 CC=gcc,将其改成 CC=arm-linux-gcc, b.找到 AR=ar,将其改成 AR=arm-linux-ar, c.找到 RANLIB=ranlib,将其改成 RANLIB=arm-linux-ranlib。 e.找到 gcc cgictest.o -o cgictest.cgi ${LIBS},

BOA服务器移植

BOA服务器移植

嵌入式Linux中的Web服务器应用Boa是一个非常小巧的Web服务器,其可执行代码只有60K左右。

它是一个单任务的Web服务器,只能依次完成用户的请求,而不会fork出新的进程处理并发连接请求。

但boa 支持cgi,能够为cgi程序fork出一个进程来执行。

Boa的设计目标是速度和安全,在其站点公布的性能测试中,boa的性能要好于apache服务器。

随着网络技术的迅猛发展,在嵌入式设备的管理和交互中,基于Web方式的应用成为目前的主流,用户可以直接通过远程登录的方式对设备进行管理和维护,大大方便了使用性。

下面就为大家讲解一下boa服务器在嵌入式Linux系统中的移植过程。

一、BOA服务器移植工具链:gcc version 4.3.2 (crosstool-NG-1.8.1-none)平台:处理器:s3c2410 内核:linux-2.6.351.解压源码tar xvf boa-0.94.13.tar.tarcd boa-0.94.132.进入src/./configure 生成Makefile修改Makefile修改CC =gcc 为CC =arm-none-linux-gnueabi-gcc修改CPP =gcc -E 为CPP =arm-none-linux-gnueabi-gcc -E3.make编译编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。

yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和Y ACC你可以轻松的构造一个语法解释器。

Apt-get install bison flex执行make然后给boa瘦身Arm-none-linux-gnueabi-strip boa二、Boa服务器配置1、创建目录mkdir /source/rootfs/etc/boa2、将boa源码目录下的boa.conf拷贝到/source/rootfs/etc/boa目录下cp boa.conf /source/rootfs/etc/boa3、修改配置文件boa.confvim /source/rootfs/etc/boa(1)Group的修改修改Group nogroup为Group 0(2)user的修改修改User nobody为User 0(3)ScriptAlias的修改修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/为ScriptAlias /cgi-bin/ /www/cgi-bin/(5)DocumentRoot的修改修改DocumentRoot /var/www为DocumentRoot /www(6)ServerName的设置修改#ServerName .here为ServerName .here否则会出现错误“gethostbyname::No such file or directory”(7)AccessLog修改修改AccessLog /var/log/boa/access_log为#AccessLog /var/log/boa/access_log(8)以下配置和boa.conf的配置有关,都是在ARM根文件系统中创建以下步骤在开发板上进行:创建HTML文档的主目录/wwwmkdir /www创建CGI脚本所在录/www/cgi-binmkdir /www/cgi-bin当不能使用cgi 时将#AddType application/x-httpd-cgi cgi改为AddType application/x-httpd-cgi cgiboa器测试将boa拷贝到开发板根文件系统的/etc/boa下#cp src/boa /source/rootfs/etc/boa将ubuntu下/etc/mime.types拷贝到开发板根文件系统的/etc下#cp /etc/mime.types /source/rootfs/etc将你的主页index.html拷贝到www目录下运行boa,然后在主机游览器输入开发板网址[root@farsight boa]# ./boa[30/10/2011:19:10:36 +0000] [root@farsight boa]# boa: server version Boa/0.94.13[30/10/2011:19:10:36 +0000] boa: server built 10 30 2011 at 19:10:36[30/10/2011:19:10:36 +0000] boa: starting server pid=968, port 80附1):boa配置文件参数说明boa的配置文件是/etc/boa/boa.conf。

KC08161103-d01-嵌入式BOA服务器工作原理(精)

KC08161103-d01-嵌入式BOA服务器工作原理(精)
3
BOA服务器特点
Boa是一款单任务的HTTP服务器,与其 他传统的Web服务器不同的是当有连接请求到 来时.它并不为每个连接单独创建进程,也不 通过复制自身进程来处理多链接,而是通过建 立HTTP请求列表来处理多路HTTP连接请求, 同时它只为CGI程序创建新的进程,这样就在 最大程度上节省了系统资源,这对嵌入式系统 来说至关重要. 同时它还具有自动生成目录、自动解压 文件等功能,因此,Boa具有很高的HTTP请 求处理速度和效率,在嵌入式系统中具有很高 的应用价值.
4
BOA服务器工作原理
ห้องสมุดไป่ตู้
5
谢谢关注!
6
嵌入式技术应用
1
嵌入式网关之远程控制设计
嵌入式BOA 服务器工作原理
1.BOA WEB服务器特点 2.工作原理分析
2
BOA服务器简介
1. BOA是一款非常小巧的Web服务器,源代码开放、 性能优秀、支持CGI通用网关接口技术,特别 适合应用在嵌入式系统中。
2. BOA服务器主要功能是在互联嵌入式设备之间 进行信息交互,达到通过网络对嵌入式设备进 行监控,并将反馈信息自动上传给主控设备的 目的。它是基于HTTP超文本传输协议的,Web 网页是Web服务最基本的传输单元。 3. BOA服务的工作基于客户机/服务器计算模型, 由Web浏览器(客户机)和Web服务器(服务器)构 成,也即的B/S结构。

嵌入式的WEB服务器BOA移植

嵌入式的WEB服务器BOA移植

基于嵌入式的WEB服务器2009嵌入式作业(4)计应1班王延龙嵌入式的WEB服务器boa移植开发板:PXA270-RP (Linux 2.6.9)宿主机: Centos 6.0 (linux 2.6.32)交叉编译器:arm-linux-gcc 3.4.61、下载Boa源码下载地址: /,或者最新发行版本: 0.94.13下载 boa-0.94.13.tar.gz,注意:从boa上下载的是boa-0.94.13.tar.tar,解压方式一样解压:# tar xzf boa-0.94.13.tar.gz2、生成Makefile文件直接运行src/configure文件,在运行之前,查看一下是否具有可执行权限3、修改Makefile文件修改 CC = gcc为 CC = arm-linux-gcc(也可以使用绝对路径,网上说得用2.95.3编译,高一点的编译器会报错,这一点,我没有去验证,我用的就是2.95.3)修改 CPP = gcc - E为 CPP = arm-linux-gcc -E4、编译# make 这一步编译时用编译工具用2.95.3以上的版本会出错:util.c: 100: 1: pasting “t” and “->” does not give valid preprocessing toke n make: [util.o] Error1解决方法:方法1>. 修改compat.h中的#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff为:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff第二步:Boa的配置在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。

在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改1、Group的修改修改 Group nogroup为 Group 02、ScriptAlias的修改修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/3、ServerName的设置修改 ServerName .here为 ServerName 192.168.0.50注意:该项默认为未打开,执行Boa会异常退出,所以必须打开,把前边#号去掉,其它默认设置即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该处定义的是WEB 服务器的文件根目录,跟boa.conf 文件 中的DocumentRoot 一致即可。 8、修改compat.h的第120行
修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 防止在make 时出现如下错误提示: util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token。
该文件目前在虚拟机的/opt/boa-0.94.13。
下面修改boa.conf文件:
1、修改用户与用户组信息
第48行:User nobody
第49行:Group nogroup
改为:第48行: User 0
第49行:Group 0
在根文件系统中的/etc/passwd 文件中没有nobody 用户,所以设成
Boa编译
10、编译boa #make 至此,在src 目录中将得到交叉编译后的boa 程序。
修改BOA配置信息
BOA的配置信息都保存在文件boa.conf中,故该文件是 BOA的配置文件,该文件是最终要放在实验箱的 /gec/web目录下,BOA默认在该路径下读取相关的所有 配置信息。
第74行:Accesslog /var/log/boa/access_log
改为:#Accesslog /var/log/boa/access_log
3、第94行,打开ServerName 的设置: 将#ServerName .here 前面的#号去 掉,该项默认为未打开,执行Boa 会异常退出,提示 “gethostbyname::No such file or directory”,所以必 须打开。
CGI应用程序的工作原理
1、CGI 应用程序读取从Web 服务器传递 来的各种信息,并对客户端的请求进行 解释和处理,如:使用SQL 语句来检索 或者更新数据库。
2、CGI 应用程序将处理结果按照CGI 规 范返回给Web 服务器,Web 服务器会对 CGI 应用程序的处理结果进行解析,并 在此基础上生成HTTP 响应信息返回给客 户端。
任务一、嵌入式Web服务器 BOA编译与移植
BOA介绍
Boa是一个单任务HTTP服务器,与其他Web 服务器(IIS、APACHE、WEBLOGIC、 WEBSPHERE、TOMCAT、JBOSS等)相比, 不同之处是当有连接请求到来时,它既不是为 每个连接都单独创建进程,也不是采用复制自 身进程处理多链接,而是通过建立HTTP请求 列表来处理多路HTTP连接完成的功能包括接受客户端请求、分析请求、响 应请求、向客户端返回请求处理的结果等。 BOA的工作流程如下: 1、修正BOA服务器的根目录。 2、读配置文件(boa.conf)。 3、写日志文件。 4、初始化Web服务器,包括创建环境变量、创建TCP套接字、绑定端口、 开始侦听、进入循环结构,以及等待和接收客户的连接请求。 5、当有客户端连接请求到达时,Web服务器负责接收客户端请求,并保存 相关请求信息。 6、收到客户端的连接请求之后, Web服务器分析客户端请求,并保存相关 请求信息。 7、 Web服务器处理完客户端的请求后,向客户端发送响应信息,最后关闭 与客户机的TCP连接。
Boa编译
9、修改boa.c文件 注释掉下面句话(第210行至第215行):
否则会出现错误: getpwuid: No such file or directory 注释掉下面语句:
否则会出现错误: - icky Linux kernel bug!: No such file or directory
同时,它只为CGI程序创建新的进程,在最大 程度上节省了系统资源,这对资源受限的嵌入 式系统来说至关重要。它还具有自动生成目录、 自动解压文件等功能,因此,BOA具有很高的 THHP请求处理速度和效率,应用在嵌入式系 统中具有很高的价值。
BOA服务器原理
1、服务器软件(BOA)始终在HTTP 端口守候客户端的连接请求 ,当客户端向服务器发起一个连接请求后,客户端和服务器之间 经过“三步握手”建立起连接。
嵌入式Web服务器软件构成与工作原理图
Boa WebServer的下载
下载bao0.94.13.tar.gz
Boa编译
1、把boa-0.94.13.tar.gz放到虚拟机/opt 2、#tar xvzf boa-0.94.13.tar.gz 3、#cd boa-0.94.13 4、#cd src 5、利用configure 工具配置生成Makefile 文件
2、在接收到客户端的HTTP 请求消息后,服务器对消息进行解析 ,包括:读取请求URL、映射到对应的物理文件、区分客户端请 求的资源是静态页面还是CGI 应用程序等。
3、如果客户请求的是静态文件,那么服务器读取相应的磁盘文 件,并将其作为HTTP 响应消息中的实体返回给客户端,如果客 户端请求的是CGI 应用程序,那么服务器将创建相应的CGI 应用 程序进程,并将各种所需信息(客户端请求信息、服务器端相关 信息等)按CGI 规范传递给CGI 应用程序进程,此后由CGI 应用 程序接管控制。
#./configure 6、修改生成的Makefile 文件的第31行、第32行(设置交叉编
译器),将
修改为:
Boa编译
7、修改defines.h 文件的第30行 将#define SERVER_ROOT “/etc/boa” 修改为:#define SERVER_ROOT “/gec/web”
0。
在根文件系统中的/etc/group 文件中没有nogroup 组,所以设成0。
修改BOA配置信息
2、相关日志文件存放位置项,保留将保存日志文件, 根据需要可以选择是否注释掉
第62行:Errorlog /var/log/boa/error_log 改为:#Errorlog /var/log/boa/error_log
相关文档
最新文档