2410下boa web服务器移植

合集下载

基于linux2.6及S3C2410上的BOA的移植

基于linux2.6及S3C2410上的BOA的移植

关键词:BA: G ; O C I 移植: 3 2 1 Sc 4 O
中图分类号 : 文献标识码:A 文章编号 :1 7 — 7 2 (0 73 0 3 — 2 6 1 4 9 一 2 0 )— 0 6 0
Ab t c: o t n n e b d e e s r e n t e b a d o ¥ c 4 0 a d 1 n x 2。 e n l S e c n r n a w b sr t P r i g a m e d d w b e v r o h o r f 3 2 1 n i u 6 k r e o w a u e a
mi me. p ty es
BA o就是—个非常小巧的快速和安全的单任务嵌入式 Wb e
服务器 ,可执行代码只有 约 6 K 。只能依 次完成用户的请 0B
求, 但 B A 。 O 支持 C I G ,能够为 C I G 程序 f r o k出一个进程来执
行。 1 8 OA 的工 作 原理
ba O 9 / r/ o - .4s c  ̄录,运行 .cn iu e生成Mk f l文件 。 /ofgr, a e ie () 1修改 b a O 9 /a e ie文件 o- .4 M k f 1 修改编译器 :
C C=/ s/ o a / r / i/ r— u- c u r lc la m b n a m l n x g c i
根文件系统为 b sb x . . ; u yo 1 I3 文件系统 y f s af ; 英培特公司 s c4 0 3 2 1 开发板及附属器件。 BA O 介绍 :
I — —
I — —
c ib n g— i
h m t1
Iid x hm ( — e .t l默认静态页面) n 注 :m f l y ie

移植web服务器boa出现的问题

移植web服务器boa出现的问题

移植web服务器boa出现的问题通过两天的努力终于可以通过pc机网页浏览板子上的资源了。

现在将遇到的问题归纳如下:1、修改src/boa.c注释掉下面语句:if (setuid(0) !=-1){DIE(”icky Linux kernel bug!”);}即修改为:#if 0if(setuid(0) != -1){DIE(”icky Linux kernel bug!”);}#endif否则运行boa时会提示boa.c:226 - icky Linux kernel bug!: No suchfile or directory错误2. make在当前目录下生成一个boa的可执行程序,./boa运行即可,ps能看到boa的进程即说明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_gmtoff3.访问端口号设置大概25左右:Port 80,可以设定我们访问网页时的端口号默认为80—访问时无需指定假如改变了此端口号为8080,必须以下列格式访问: http://192.168.1.3:8080只能在超级终端输入boa一次,如果启动两次,就会出现端口被占用的情况。

友善之臂移植的文件系统中已经在系统启动时已经启动该服务,所以不用再启动一次(具体可查看你的系统启动信息)。

所以如果你用移植好的文件系统,默认情况已经启动,不用再boa。

4、编译capture和cgitest时,修改makefile,在cflags后面加上-static,目的是为了静态编译capture和cgitest,我想应该是我的板上没有它动态运行时的库文件,或者指定的库文件路径不对(还没检查),不过这样编译生成的文件就很大。

嵌入式WEB服务器在ARM-Linux上的移植全过程-::电子爱好者天地::.-西...

嵌入式WEB服务器在ARM-Linux上的移植全过程-::电子爱好者天地::.-西...

嵌入式WEB服务器在ARM-Linux上的移植全过程-::电子爱好者天地::.-西...因为要用,所以查了一些资料,再结合自己的实际情况,在ARM板子上做了一个WEB服务器,服务器可以通过CGI进行动态交互.现记录于此.主机:redhat企业版4目标板:EBD9260-S(内核版本2.6.19)主机IP:192.168.0.12目标板IP:192.168.0.11交叉编译环境已经设置好.由于ARM资源的限制,不可能将一些大型的服务器移植上去,对脚本的支持也不大可能,开源的boa就是这么一个服务器:可以传送静态网页和通过纯CGI的方式进行交互.步骤:1.从上下载boa的源码,目前版本是boa-0.94.132.tar -xzvf boa-0.94.13cd boa-0.94.13/src./configure,生成Makefile3.vi Makefile,修改:CC=armv5l-linux-gccCPP=armv5l-linux-gcc -E保存退出4.make,出现错误:util.c:100:1:pasting "t" and "->" does not give a valid preprocessing token5.修改compat.h中:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff#define TIMEZONE_OFFSET(foo) foo##->tm_zone为:#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff#define TIMEZONE_OFFSET(foo) (foo)->tm_zone 6.还有一个错误需要修改:将boa.c中的if(setuid(0)!=-1){DIE("icky Linux Kernel bug!");}将这三行注掉,不然编译不会出错,但是启动不起来7.重新make,生成可执行文件boa8.剥去调试信息:armv5l-linux-strip boa9. 修改boa-0.94.13目录中的boa.conf:port 80user 0group 0Errorloog /var/log/boa/error_logAccesslog /var/log/boa/access_logserver Name Document Root /var/wwwDirectaryIndex index.htmlKeepAliveMax 1000KeepAliveTimeOut 10Mimetypes /etc/mime.typesDefaultType text.plainCGIPATH /bin:/usr/bin:/usr/local/binAlias /doc /usr/docScriptAlias /cgi-bin/ /var/www/cgi/bin/10:在目标板上:mkdir /var/wwwmkdir /var/www/cgi-binmkdir /var/log/boamkdir /etc/boa通过ftp或者nfs的方式将主机下的/etc/mime_types.h传到目标板/etc下将刚才修改的boa.conf传到/etc/boa下将生成的boa可执行文件传到/usr/bin下制作index.html,将其传到目标板/var/www/下11.在目标板上启动boa,在主机上的浏览器中输入:http://92.168.0.11就可以看到index.html的内容了,如果看到,则说明boa移植成功了12.测试cgi.编写hello.cgi:#include <stdio.h>int main(void){printf("Conten-type:text/html\n\n");printf("<html>\n");printf("<head><title>CGI OUTPUT</title></head>\n");printf("<body\n>");printf("<h1>Hello,xibiren!</h1>\n");printf("</body>\n");printf("</html>\n");exit(0);}然后armv5l-linux-gcc -o hello.cgi hello.c生成hello.cgi,将其传输到目标板上/var/www/cgi-bin/目录下13.在主机浏览器中输入http://192/168.0.11/cgi-bin/hello.cgi如果能看到:Hello,xibiren!的测试界面,则说明cgi测试通过.//****----------------//要想进一步用好boa的cgi功能,还必须移植CGIC库.下次再写了.//****----------------//按照上面的步骤执行之后,需要重新制作文件系统,才能在下此开机之后能够使用.//****-----------------//。

嵌入式WebServer GOAHEAD移植实验

嵌入式WebServer GOAHEAD移植实验

实验十五嵌入式WebServer GoAhead 移植实验一,实验目的完成这个实验后,您将具有以下能力:⏹ 了解GoAhead webserver 的移植方法。

⏹ 学习如何使用GoAhead web 服务器。

二,基础知识进行本实验前,您应具有:⏹ C 语言基础⏹ Linux 环境下vi 编译器的使用⏹ Makefile 的编写和使用⏹ Linux 下的程序编译与交叉编译过程三,实验环境准备为了完成本实验,以下硬件条件是必需的:⏹ UP-NETARM2410-S 嵌入式实验平台⏹ PC 机Pentium500 以上,硬盘40G 以上,内存128M 以上为了完成本实验,以下软件条件是必需的:⏹ PC 机操作系统RedHat Linux 9.0⏹ ARM-LINUX 开发环境⏹ webs218.tar.gz 压缩包四,情景描述下载webs218.tar.gz 压缩包并且解压,之后对LINUX 目录下的main.c 程序和Makefile 进行改造,并且通过交叉编译器进行编译。

将生成的webs 程序在开发板上执行并测试。

五,实验基本原理1,GoAhead Webserver 介绍GoAhead Webserver是为了嵌入式设备的需要而设计的。

该Webserver软件很有特色且开源,它具有各种各样的特性,包括支持活动服务页,嵌入Java描述语言,in-process CGI 形式,SSL,文摘访问认证,用户管理和标准CGI等等,这些全部在一个60K大小的存储脚本中。

这对于那些需要在基于浏览管理模式的设备上传递动态信息的系统管理开发人员来说,是非常有用和高效的。

GoAhead Webserver支持多种开发平台和操作系统,包括Windows NT/98/95、Windows CE、Embedded Linux、Linux、VxWorks、QNX、Lynx等等,因此具有很强大的移植特性。

GoAhead 网络服务器的发展同时也促进了嵌入式网络服务器的源代码的进化。

嵌入式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两个文件。

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

嵌入式Web服务器Boa移植.ppt
该处定义的是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”,所以必 须打开。

基于linux2_6及S3C2410上的BOA的移植

基于linux2_6及S3C2410上的BOA的移植

boa: server version Boa/0.94.13
[01/Jan/1970:00:00:09 +0000]
boa:server built Feb28 2007 at 20:48:20
[01/Jan/1970:00:00:09 +0000]
boa: starting server pid=700, port 80
中图分类号:
文献标识码:A
文章编号:1671-4792-(2007)3-0036-02
Abstract: Porting an embedded web server on the board of S3c2410 and linux 2.6 kernel So we can run a web
server which can support the CGI and dynamic html pages. Users can control and manger the embedded equipments

(3)把 /root/rootfs/mnt/etc/fstab 拷贝到 /root/
rootfs_hjp/etc/下

在/root/rootfs_hjp/etc/init.d/rcS 文件中加入如下
移 植
内容:
/bin/mount -a
// 加载 fstab 文件内的内容
测试 boa 的运行:
[01/Jan/1970:00:00:09 +0000]
测试静态页面:
在 pc 机的浏览器内输入开发板内核的 ip 地址就能看到
默认的 index.html 网页(/root/myfilet/myboa/server/
html/index.html)。

嵌入式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 下面。

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

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

小型Web服务器Boa的移植与验证管华庆【期刊名称】《计算机技术与发展》【年(卷),期】2016(000)002【摘要】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 in-stalled,the system uses the Boaserver,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.%现代通信技术和计算机技术都迎来了显著的发展,各个应用领域都要求将可移动设备接入网络。

基于ARM9的Web服务器Boa的软、硬件设计

基于ARM9的Web服务器Boa的软、硬件设计

基于ARM9的Web服务器Boa的软、硬件设计作者:金勇来源:《电子世界》2013年第13期【摘要】文章介绍了基于ARM9的嵌入式Web服务器Boa的软、硬件设计及其实现,硬件部分的核心是三星的S3C2410X处理器。

最后成果形式为可以远程访问的WebServer嵌入式服务器。

Boa是一款单任务的HTTP服务器。

与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接。

而是通过建立HTTP请求列表来处理多路HTTP连接请求。

同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。

同时它还具有自动生成目录、自动解压文件等功能。

因此,Boa在嵌入式系统中具有很高的应用价值。

【关键词】ARM;Linux;嵌入式Web服务器;CGI1.ARM简介广义地讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。

它是嵌入到对象体系中的专用计算机系统,以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

目前非常流行的ARM 内核有ARM7TDM1、StrongARM、ARM720T、ARM9TDM1、ARM920T、ARM940T、ARM946T、ARM966T、ARM10TDM1等。

本文所讨论的目标板的CPU为ARM920T内核的三星S3C2410芯片。

ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。

它包含ARM920T、ARM922T和ARM940T三种类型,广泛应用于PDA、移动通信、路由器、工业控制等领域。

2.嵌入式Web服务器实现原理嵌入式Web服务器是指将Web服务器引入到现场嵌入式设备中,并驻留其中有限的代码空间内。

与传统的Web应用相比,简化了系统结构,并将信息采集和信息发布都集成到现场的嵌入式设备中。

移植boa的问题

移植boa的问题

boa成功移植到S3C2410开发板上ARM-LINUX学习整理交流2009-06-06 16:14:27 阅读277 评论0字号:大中小2009 05 11一:下载源码:/[root@localhost ~]# cd /usr/src[root@localhost src]# tar zxvf boa-0.94.13.tar.tar[root@localhost src]# cd boa-0.94.13[root@localhost boa-0.94.13]# cd src[root@localhost src]# ./configure二:编译前修改的文件:1. 修改Makefile文件,找到CC=gcc和CPP=gcc -E,分别将其改为交叉编译器安装的路径:CC=/usr/local/arm/2.95.3/bin/arm-linux-gccCPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E保存退出。

2. 修改编译方式:LDFLAGS = -g –static注: 使用静态编译可以让目标文件自动的包含所需要的库文件,而动态编译需要手工拷贝库文件。

3.修改/src/defines.h文件:#define SERVER_ROOT "/etc/boa"4 修改boa-0.94/src/ util.c文件修改char *get_commonlog_time(void)函数。

time_offset = 0;5. 修改src/config.c:加Current_uid=16. 修改compat.h:把第120 行的#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff修改为:#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff7.修改/src/boa.c,注释掉下面两行:/* if (setuid(0) != -1) {DIE("icky Linux kernel bug!");} *//*if (passwdbuf == NULL) {DIE("getpwuid");}*/8 gethostbyname:: Resource temporarily unavailable这个问题我也遇到过,我只是把src文件夹下的config.c里的if(!server_name){..........}(大概在266行到286行之间)注释掉,就能运行在板子上运行boa,到现在为止没有遇到过是么问题。

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。

嵌入式web服务器boa移植到mini2440开发板详细过程

嵌入式web服务器boa移植到mini2440开发板详细过程

嵌入式web服务器boa移植到mini2440开发板详细过程1、概述为了和开发板上用的httpd服务,我选用的服务器是boa,boa已经没有更新了,但是现在的应用仍然很大,当然更先进的AppWeb当然是更好的选择,不过学习应先从简单的入手。

本教程使用环境是Red Hat Enterprise Linux 6,交叉编译工具是arm-linux-gcc4.3.2,开发板是mini2440,开发板内核是2.6.32.2、到/下载源码,boa最终版是0.94.133、解压文件1)解压[root@localhostopen_source]# lsboa-0.94.13.tar.gz[root@localhostopen_source]# tar -xvfboa-0.94.13.tar.gz -C ./[root@localhostopen_source]# lsboa-0.94.13 boa-0.94.13.tar.gz2)为了和X86版本区别把解压出来的文件夹boa-0.94.13重新命名为boa-0.94.13_arm[root@localhostopen_source]# mv boa-0.94.13 boa-0.94.13_arm4. 编译前修改工作(主要是因为boa太久没有更新,目前相对说比较老,要修改下才能通过编译)1)修改vicompat.h文件[root@localhostopen_source]# lsboa-0.94.13_arm boa-0.94.13.tar.gz[root@localhostopen_source]# cd boa-0.94.13_arm/src/[root@localhostsrc]# vicompat.h找到#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff即将120行和126行的foo##->tm_gmtoff改为foo->tm_gmtoff否则会出现错误:util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 错误12)修改src/log.c注释掉if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");}为:/*if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");}*/否则会出现错误:log.c:73 unable to dup2 the error log:bad file descriptor3)修改src/boa.c注释掉下面两句话:if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”);}为#if 0if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”);}#endif否则会出现错误:boa.c:211 - getpwuid: No such file or directory。

Boa Web服务器在S3C2410上移植

Boa Web服务器在S3C2410上移植

准备工作1.下载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文件boa-0.94.13.tar.gz解压后生成boa-0.94.13目录,运行boa-0.94.13/src/configure文件,执行:#cd boa-0.94.13/src#./configure3、修改Makefile文件(注意:必须用cross-2.95.3, 如使用3.3.2,3.4.1等等会出错)a、修改CC = gcc为CC = /usr/local/arm/2.95.3/bin/arm-linux-gcc (根据自己电脑主机的编译器位置定)b、修改CPP = gcc - E为CPP = /usr/local/arm/2.95.3/bin/arm-linux-gcc -E4、编译进入boa-0.94.13/src目录# make# /usr/local/arm/2.95.3/bin/arm-linux-strip boa (这是为了进行去除boa中生成的编译信息,让文件变小,我在移植过程中没有执行这一步)5. 将编译好的程序放入arm根文件系统的/bin目录下# cp boa /home/arm/nfs/rootfs/bin/Boa的配置这一步的工作也在电脑主机上完成。

在电脑主机上的Boa源码boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。

如下:#vi boa.conf1、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 .here注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。

第5章 boa的移植部分

第5章 boa的移植部分
5.2 嵌入式Web 服务器-boa的移植
5.2.1 嵌入式web服务器概述 随着嵌入式技术的发展和高速宽带网 络的普及,利用网络实现远程监控已为人 们广泛接受,嵌入式网络监控技术正是在 此条件下逐步发展成熟起来的。
直接采用Internet网络连接嵌入式设备进行 远程监控:必须在嵌入式设备上安装web 服务器,使其支持远程PC或移动终端通过 浏览器来访问该设备。 常见的嵌入式web服务器:boa,httpd和 thttpd。
1. boa简介 Boa 是一款单任务的HTTP 服务器
当有连接请求到来时,它并不为每个连接单独 创建进程,也不通过复制自身进程来处理多链 接, 而是通过建立HTTP 请求列表来处理多路 HTTP 连接请求 同时它只为CGI 程序创建新的进程 在最大程度上节省了系统资源, 这点对嵌入式 系统来讲是至关重要的。
GET方法是通过环境变量QUERY- STRING 传递用户提交的数据。 经过编码的数据以问号打头追加在标识 CGI脚 本地址的URL后一起传给Web服务器。 服务器将其存于QUERY- STRING中,CGI 程 序可以通过getenv( )函数来读取。编码数据除了 表单数据, 还可以是直接调用CGI脚本时追加在 URL地址后面的参数。
POST方法则是通过标准输入( stdin) 传 递 提交数据。 编码了的表单数据独立地传送给Web服务 器,CGI 程序从标准输入中获得,可以用 getchar( ) 、sscanf( ) 、fread( ) 等函数。 要注意的是数据的长度是通过读取环境变 量 CONTENT_LENGTH 获得的,而不是通过 文件尾标识符来判断。
CGI 程序可以用来在web内加入动态的 内容。 通过接口,浏览器能够发送一个可执行 应用程序的HTTP请求,而不仅仅只是静态 的HTML文件。 服务器运行指定的应用程序, 这个应 用程序读取与请求相关的信息,获得请求传 过来的数值。

boa服务器的移植

boa服务器的移植

boa服务器的移植boa Web服务器是一个单任务http服务器,源代码开放、性能高。

下载地址:/Cgic库文件:cgic205.tar.gz 。

下载地址:/cgic/交叉编译器版本:arm-none-linux-gnueabi-gcc一、编译配置boa服务器1 、[root@localhost /]#mkdir web//在根目录下创建web目录2 、[root@localhost /]# cd /web/3 、[root@localhost web]# rz4 、[root@localhost web]# tar –zxvf boa-0.94.13.tar.gz//将源码解压到/web目录下5 、[root@localhost web]# cd boa-0.94.13/6 、[root@localhost boa-0.94.13]# cd src/7 、[root@localhost src]# ls8 、[root@localhost src]# ./configure//运行./configure使之生成Makefile文件9 、[root@localhost src]# vi Makefile修改内容如下:把CC=gcc 和CPP=gcc -E改写成CC=arm-none-linux-gnueabi-gccCPP=arm-none-linux-gnueabi-g++ -E10 、[root@localhost src]# vi compat.h在一般模式下输入:set nu显示行编号,再用120进到120行,修改内容如下:120 #define TIMEZONE_OFFSET(foo)foo##-&gt;tm_gmtoff改为define TIMEZONE_OFFSET(foo) foo-&gt;tm_gmtoff 把120行foo后两个#号去掉11 、[root@localhost src]# make//编译12 、[root@localhost src]# arm-linux-strip boa //优化boa可执行文件(此步非必须)13 、[root@localhost web]# cd boa-0.94.13/14 、[root@localhost boa-0.94.13]# vi boa.conf //修改boa的配置文件在一般模式下输入:set nu显示行编号,再用111进到111行,修改内容如下:把111 DocumentRoot /var/www改为111 DocumentRoot /var/www//指明html文件所放的路径把193 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/改为193 ScriptAlias /cgi-bin/ /var/www/cgi-bin///指明cgi脚本的虚拟路径所对应的实际路径15、将/src目录下新生成的boa文件下载到目标板的/bin目录下,将boa.conf文件下载到目标板的/etc/boa/目录下。

boa移植步骤

boa移植步骤

BOA在ARM9上的移植在开发板上移植boa,首先需要下载boa源码包boa-0.94.13.tar.gz并解压,然后进入src 目录执行configure命令,生成编译所需要的makefile文件。

接着修改makefile,使其make 生成的boa可执行文件可以在arm板上运行。

CC=arm-linux-gcc CPP=arm-linux-gcc-E生成boa可执行程序以后,需要配置boa服务器。

而这其中涉及到一个很重要的配置文件boa.conf,该文件的缺省目录是/etc/boa,由src/define.h文件的SERVER_ROOT定义,也可以在启动的时候通过“-c”指定。

我们需要对其进行修改:Boa.conf的修改1、修改Group nogroup为Group 0 由于在/etc/group文件中没有nogroup组,所以设成0。

另外在/etc/passwd中有nobody用户,所以User nobody不用修改2、注释AccessLog /var/log/boa/access_log语句3、修改DocumentRoot为DocumentRoot /home/www 该目录为默认的开发板网页服务器文件所在目录4、修改mime.types文件所在的目录位置MimeTypes /home/mime.types mime.types文件从宿主机linux系统中的/etc目录中拷贝到开发板文件系统的home目录下5、打开ServerName 该项默认为未打开,执行boa会异常退出ServerName .here《基于ARM9的远程临近系统研究与实现》Boa Web Server的搭建1)下载Boa源码现在boa最新的版本是0.94.14rc21,这里我们使用的是0.94.13这个版本,boa-0.94.13.tar.gz.解压:#tar zxvf boa-0.94.13.tar.gz2)生成Makefile文件#cd boa-94.13/src#./configure3)修改Makefile找到CC=gcc并改为:CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc找到CPP=gcc –E 并改为:CPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E4)编译#make#/usr/local/arm/2.95.3/bin/arm-linux-strip boa5)Boa的配置在/etc/boa/boa/conf里修改:*将user nobodyGroup nogroup改为User 0Group 0;*将DocumentRoot /var/www改为DocumentRoot /www,这样web服务器的文档根目录为/www;*将MimeTypes /etc/mime.types改为MimeTypes /www/mime.types;定义默认首页和CGI程序所在目录,即DirectoryIndex index.htmlScriptAlias /cgi-bin /www这样指定后,index.html为远程浏览客房访问WebServer所看到的首页默认值,用C编写的CGI程序编译成二进制文件,放到/www目录下,CGI程序能被正确地执行。

boa移植事项

boa移植事项
四. OK,运行boa程序。
在windows 下通过http://172.20.223.151这种形式访问,进行测试。
五. 移植到开发板
1>. (第一.3步)操作完成之后,修改Makefile文件:
将:
CC = gcc
CPP = gcc -E
boa服务2009-12-21 10:05:40| 分类: web | 标签: |字号大

小 订阅
在前面: boa相关目录:
1. boa.conf 的存放目录:
默认boa.conf是在/etc/boa.conf目录的,boa运行时会自动去找/etc/bon.conf文件。
5. 设置默认首页: DirectoryIndex index.html
6. 设置cgi脚本目录: 将
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin
修改为
ScriptAlias /cgi-bin/ /var/www/cgi-bin
否则会出现如下错误
make: yacc:命令未找到
make: *** [y.tab.c] 错误 127
make: lex:命令未找到
make: *** [lex.yy.c] 错误 127
3.修改文件
(1)修改 src/compat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
DIE(”initgroups”);
}
即修改为:
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);

实验七网络服务器 Boa 实验

实验七网络服务器 Boa 实验

实验七网络服务器 Boa 实验一、实验目的学会嵌入式Web 服务器Boa 的移植;学会使用Boa 服务器。

二、实验设备硬件:EduKit-IV 嵌入式教学实验平台、Mini2410 核心子板、PC 机;软件:Windows 2000/NT/XP、Ubuntu 8.04、其他嵌入式软件包。

三、实验内容下载Boa 服务器程序的源码,完成Boa 程序的移植;修改Boa 的配置,使其能够支持CGI 程序的执行;运行和测.Boa 服务器。

实验步骤:下面介绍如何进行BOA 实验(工作目录$WORKDIR 为:/usr/local/src/EduKit-IV/,$SIMPLEDIR 为:$WORKDIR/Mini2410/simple):1)设置环境变量(工作目录$WORKDIR 为:/usr/local/src/EduKit-IV/,$SIMPLEDIR 为:$WORKDIR/Mini2410/simple):$ source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh$ source /usr/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/path.sh2)进入到Madplay 播放器实验目录,并解压相应工具包及库:$ cd $SIMPLEDIR/11.1-boa$ tar zxvf boa-0.94.13.tar.gz3)配置boa 生成Makefile:$ cd boa-0.94.13/src$ ./configure --host=arm-linux --target=arm-linux4)修改源码文件:修改$SIMPLEDIR/11.1-boa/boa-0.94.13/src/Makefile:修改:CC = gccCPP = gcc -ECC = arm-linux-gccCPP = arm-linux-gcc -E修改$SIMPLEDIR/11.1-boa/boa-0.94.13/src/compat.h:修改:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff为:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff修改$SIMPLEDIR/11.1-boa/boa-0.94.13/src/boa.c:修改:if (setuid(0) != -1) {DIE("icky Linux kernel bug!");}为:// if (setuid(0) != -1) {//// }DIE("icky Linux kernel bug!");5)修改完源码文件后输入命令开始编译源码:$ make$ arm-linux-strip boa6)修改boa 配置文件$SIMPLEDIR/11.1-boa/boa-0.94.13/boa.conf:修改:User nobodyGroup nogroup为:User rootGroup root修改:#ServerName .hereServerName 修改:DocumentRoot为:DocumentRoot /www修改:ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/为:ScriptAlias /cgi-bin/ /www/cgi-bin/7)准备BOA 实验必备源码并拷贝到$NFSDIR 目录(实验中将通过ftp 服务加载到实验平台运行的 linux 上)。

基于Linux和S3c2410的嵌入式WebServer的研究与实现

基于Linux和S3c2410的嵌入式WebServer的研究与实现

第24卷第2期 计算机应用与软件Vol 124,No .22007年2月 Computer App licati ons and Soft w are Feb .2007基于L i n ux 和S3c2410的嵌入式W eb Server 的研究与实现孙 辉 陆松年 杨树堂(上海交通大学电子工程系 上海200030)收稿日期:2005-04-11。

孙辉,硕士生,主研领域:嵌入式系统,视频内容监控。

摘 要 论述了在基于嵌入式L inux 操作系统和S3c2410的AR M 处理器的嵌入式系统中W eb Server (Boa 网络服务器)的实现方法,通过CGI,用户可以动态地访问W eb Server 。

采用目标板启动时自动运行Boa 服务器的方法,用户可以方便地更改服务器的默认网页。

这种嵌入式W eb Server 方案可以广泛地应用在远程监控、智能家居等应用领域,具有广泛的应用前景。

关键词 嵌入式L inux 操作系统 S3c2410处理器 Boa 网络服务器 CGIRESEARCH AND I M PL E M ENTAT I O N O F THE E M BEDD ED W EB SERVERBASED O N L I NUX AND THE PROCESSO R O F S3c2410Sun Hui Lu Songnian Yang Shutang(D epart m ent of Electronic Engineering,Shanghai J iaotong U niversity,Shanghai 200030,China )Abstract This paper has discussed the i m p le mentati on of the embedded W eb Server based on L inux and the p r ocess or of S3c2410.Thr ough CGI (Common Gate way I nterface ),clients can dyna m ically visitW eb Server .This paper has adop ted the method of aut omatically run 2ning Boa W eb Server when the objective board is started up,and clients can flexibly modify the default page of the W eb Server .This kind of W eb Server sche me has a quite bright p r os pect and can be app lied in vari ous field,such as re mote monit or and contr ol syste m,home aut oma 2ti on p r oducts .Keywords E mbedded linux The p r ocess or of S3c2410 Boa web server CGI (Common Gate way I nterface )1 引 言WWW (World W ide W eb )服务的发展带动了I nternet 的充分发展,并且成为I nternet 上最热门的服务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011.1移植过程参考网上文章,遇到诸多问题,最后在如下转载的帖中看到相同的,参考修改后移植成功。

没有挂在NFS做为文件系统,所以其中的NFS中的文件操作是在对应的文件系统中,过程类似boa成功移植到S3C2410开发板上一:下载源码:/[root@localhost ~]# cd /usr/src[root@localhost src]# tar zxvf boa-0.94.13.tar.tar[root@localhost src]# cd boa-0.94.13[root@localhost boa-0.94.13]# cd src[root@localhost src]# ./configure二:编译前修改的文件:1. 修改Makefile文件,找到CC=gcc和CPP=gcc -E,分别将其改为交叉编译器安装的路径: CC=/usr/local/arm/2.95.3/bin/arm-linux-gccCPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E保存退出。

2. 修改编译方式:LDFLAGS = -g –static注: 使用静态编译可以让目标文件自动的包含所需要的库文件,而动态编译需要手工拷贝库文件。

3.修改/src/defines.h文件:#define SERVER_ROOT "/etc/boa"4 修改boa-0.94/src/ util.c文件修改char *get_commonlog_time(void)函数。

time_offset = 0;5. 修改src/config.c:加Current_uid=16. 修改compat.h:把第120 行的#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff修改为:#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff其中3,4,5,6项我用的版本不用修改不会出错7.修改/src/boa.c,注释掉下面两行:/* if (setuid(0) != -1) {DIE("icky Linux kernel bug!");} *//*if (passwdbuf == NULL) {DIE("getpwuid");}*/8 gethostbyname:: Resource temporarily unavailable这个问题我也遇到过,我只是把src文件夹下的config.c里的if(!server_name){..........}(大概在266行到286行之间)注释掉,就能运行在板子上运行boa,到现在为止没有遇到过是么问题。

但不知道以后会不会有问题。

解决:config.c/*if (!server_name) {struct hostent *he;char temp_name[100];if (gethostname(temp_name, 100) == -1) {perror("gethostname:");exit(1);}he = gethostbyname(temp_name);if (he == NULL) {perror("gethostbyname:");exit(1);}server_name = strdup(he->h_name);if (server_name == NULL) {perror("strdup:");exit(1);}}*/9. /src/log.c中的修改:注释掉:/* if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");} */10. 在boa.conf中的修改:(1)ServerName的设置修改#ServerName .here为ServerName .here注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。

其它默认设置即可。

注意:以下是为改为下面这样的:(2)User与Group的修改:User 0Group 0(3)ErrorLog /var/log/boa/error_logAccessLog /var/log/boa/access_log(4)DocumentRoot /var/www(5)DirectoryIndex index.html(6)KeepAliveMax 1000KeepAliveTimeout 10(7)MimeTypes /etc/mime.types(8)ScriptAlias /cgi-bin/ /var/www/cgi-bin/如上各项改成列出的,其它的可以不用改,如果出问题可以尝试屏蔽然后调试。

11. 此外,还需要将mime.types文件复制目标板根文件系统/etc目录下,通常可以从linux 主机的/etc目录下直接复制即可,我重烧了几次的,要是不想重烧,可以拷到共享目录/home下,不过要重新将/home mount到/etc上。

三:运行make进行编译,得到可执行的程序boa[root@localhost boa-0.94.13]# cd /arms3c2410/boa/boa-0.94.13/src[root@localhost src]# make cleanrm -f y.tab.o lex.yy.o alias.o boa.o buffer.o cgi.o cgi_header.o config.o escape.o get.o hash.o ip.o log.o mmap_cache.o pipe.o queue.o read.o request.o response.o select.o signals.o util.o sublog.o timestamp.o boa core lex.yy.c y.tab.c y.tab.h *~ boa_indexer index_dir.o[root@localhost src]# make去掉调试信息: #/usr/local/arm/2.95.3/bin/arm-linux-strip boa四:配置文件的修改:1. 我用的是NFS共享文件方式,在将PC机新建一个目录:/nfs,用webmin将/nfs和/home 设置为与目标板可以共享的目录。

2. 在/nfs下新建log和www目录:[root@localhost ~] # mkdir /nfs/log[root@localhost ~] # mkdir /nfs/www[root@localhost ~] # mkdir /nfs/log/boa[root@localhost ~] # mkdir /nfs/www/cgi-bin将/usr/share/doc/HTML目录下的img目录和index.html文件拷到/nsf/www下[root@localhost ~] # chmod 777 /nfs/log/*[root@localhost ~] # chmod 777 /nfs/www/*3. 在/home下新建目录boa[root@localhost ~] # mkdir /home/boa将编译得出的可执行文件/boa-0.94.13/src中的boa文件,/boa-0.94.13/src中的defines.h文件,/boa-0.94.13中的boa.conf文件拷到/home/boa下[root@localhost ~] # chmod 777 /home/*4. 将/nfs和/home/boa分别mount到目标板上的/var和/etc/boa上:[root@(none) /]# ifconfig eth0 10.10.205.245[root@(none) /]# mount -o nolock -t nfs 10.10.205.242:/home/boa /etc/boanfs warning: mount version older than kernel[root@(none) var]# mount -o nolock -t nfs 10.10.205.242:/nfs /varnfs warning: mount version older than kernel五:运行:[root@(none) boa]# ./boa[01/Jan/1970:00:03:19 +0000] caught SIGSEGV, dumping core in /tmpAborted解决:这个问题一直困扰了我N长,今天才解决,原以为问题出在开发板上,原来一直在刚开始的/usr/src/boa-0.94.13/src的Makefile上面:将CC=/usr/local/arm/2.95.3/bin/arm-linux-gccCPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E改为:CC = /usr/local/arm/3.4.1/bin/arm-linux-gccCPP = /usr/local/arm/3.4.1/bin/arm-linux-g++也遇到这个问题,搞了一天没搞定,郁闷,查资料看到的出现内存错误的有下列几种1.文件系统中的库不全,有人用开发板自带的库就可以,后来调整自己文件系统的库2.函数指针错误,修改源码过程造成3.交叉编译器问题,就如这个。

重新编译:[root@localhost src]# make clean[root@localhost src]# makebison -y -d boa_grammar.y/usr/local/arm/3.4.1/bin/arm-linux-gcc -g -O2 -pipe -Wall -I. -c -o y.tab.o y.tab.cy.tab.c: In function `yyparse':y.tab.c:1295: warning: implicit declaration of function `yylex'flex boa_lexer.l/usr/local/arm/3.4.1/bin/arm-linux-gcc -g -O2 -pipe -Wall -I. -c -o lex.yy.o lex.yy.c。

相关文档
最新文档