boa在ARM上的移植方法

合集下载

在arm开发板上部署boa服务器

在arm开发板上部署boa服务器

在arm开发板上部署boa服务器2009-08-20 14:22:12| 分类:编程笔记|字号订阅里面所有的步骤都确定完成过,但是可能遗漏了一些步骤,有待重部署一次来验证,补充,--------------------------------------一,下载/二,解压# tar xzf boa-0.94.13.tar.gz三,编译# cd boa-0.94.13/src# ./configure生成了makefile文件,修改makefile文件,把其中的CC CPP改为:CC = arm-linux-gccCPP = arm-linux-g++然后make# make删除调试信息(可以不做,目的是减小文件大小):# arm-linux-strip boa四,修改配置从boa根目录找到boa.conf文件,修改如下项目:User nobody (可以不修改)Group nogroup 改为:Group 0ErrorLog /var/log/boa/error_log (错误日志文件)AccessLog /var/log/boa/access_log (访问日志文件,可以用#注释掉这行,表示不要这个日志)ServerName (服务器地址)DocumentRoot /var/www (html文件主路径)MimeTypes /etc/mime.types (mime.types文件)更多配置,可以参见:/u1/34076/showart_268366.html五,配置开发板1,复制boa的可执行文件到开发板,(如/usr/local/bin/ 目录)2,在开发板上建文件夹# mkdir /var/www/ ,并放一个简单的index.html 测试文件进去# mkdir /var/log/boa ,用来存放access_log error_log3,复制之前修改好的boa.conf文件到/etc/boa/boa.conf4,复制自己pc(我的是ubuntu)上的mime.types文件,到/etc/mime.types上六,运行boa# boa-----------------------------------------------------------------------------------------------------------------更多说明:一,运行正确以上6步后,应该能通过其它电脑的浏览器,访问到/var/www/index.html页面二,如果执行时候有错误:# ./boa[27/Nov/1990:13:22:25 + 0000]boa.c:266.icky Linux kernel bug!:No such fileBae将User 0修改成User nobodyBae三,在板子上方放的cgi程序,html文件,一定要把权限修改对,修改成755四,一个简单的cgi测试程序:(来自:/viewthread.php?tid=83&highlight=cgi)1,html文件:-------------------------------------<html><head><title>CGI Testing</title></head><body><table width="200" height="180" border="0" style="font-size:12px"><tr><td><div style="font-weight:bold; font-size:15px">Method: GET</div><div>lease input two number:<div><form method="get" action="./cgi-bin/get"><input type="txt" size="3" name="a">+<input type="txt" size="3" name="b">=<input type="submit" value="sum"></form></td></tr><tr><td><div style="font-weight:bold; font-size:15px">Method: POST</div><div>lease input two number:<div><form method="post" action="./cgi-bin/post"><input type="txt" size="3" name="m">*<input type="txt" size="3" name="n">=<input type="submit" value="resu"></form></td></tr><tr><td><inputtype="button" value="BackHome"onclick='javascript:window.location="./index.html"'></td></tr></table></body></html>------------------------------2,get.c :------------------------------#include <stdio.h>#include <stdlib.h>int main(void){char *data;char a[10],b[10];printf("Content-Type:text/html\n\n");printf("<HTML>\n");printf("<HEAD>\n<TITLE >Get Method</TITLE>\n</HEAD>\n");printf("<BODY>\n");printf("<div style=\"font-size:12px\">\n");data = getenv("QUERY_STRING");if(sscanf(data,"a=%[^&]&b=%s",a,b)!=2){printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n"); }else{printf("<DIV STYLE=\"COLOR:GREEN; font-size:15px;font-weight:bold\">a + b= %d</DIV>\n",atoi(a)+atoi(b));}printf("<HR COLOR=\"blue\" align=\"left\" width=\"100\">");printf("<input type=\"button\" value=\"Back CGI\"onclick=\"javascript:window.location='../cgi.html'\">");printf("</div>\n");printf("</BODY>\n");printf("</HTML>\n");return 0;}------------------------------3,post.c:------------------------------#include <stdio.h>#include <stdlib.h>int main(void){int len;char *lenstr,poststr[20];char m[10],n[10];printf("Content-Type:text/html\n\n");printf("<HTML>\n");printf("<HEAD>\n<TITLE >ost Method</TITLE>\n</HEAD>\n");printf("<BODY>\n");printf("<div style=\"font-size:12px\">\n");lenstr=getenv("CONTENT_LENGTH");if(lenstr == NULL){printf("<DIV STYLE=\"COLOR:RED\">Errorarameters should be entered!</DIV>\n"); }else{len=atoi(lenstr);fgets(poststr,len+1,stdin);if(sscanf(poststr,"m=%[^&]&n=%s",m,n)!=2){printf("<DIV STYLE=\"COLOR:RED\">Error: Parameters are not right!</DIV>\n");}else{printf("<DIV STYLE=\"COLOR:GREEN; font-size:15px;font-weight:bold\">m * n = %d</DIV>\n",atoi(m)*atoi(n));}}printf("<HR COLOR=\"blue\" align=\"left\" width=\"100\">");printf("<input type=\"button\" value=\"Back CGI\"onclick=\"javascript:window.location='../cgi.html'\">");printf("</div>\n");printf("</BODY>\n");printf("</HTML>\n");fflush(stdout);return 0;}------------------------------4,把两个c程序编译完成,复制到开发搬上,通过其它pc访问测试html页面,调用这两个cgi,其中如果出现:502 Bad Gateway The CGI was not CGI/1.1 compliant.错误,有可能是如下原因:(1)将.cgi文件拷贝至目标板上后,必须改变其权限chmod 755 *(2)测试程序中“//“的问题。

嵌入式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库.下次再写了.//****----------------//按照上面的步骤执行之后,需要重新制作文件系统,才能在下此开机之后能够使用.//****-----------------//。

嵌入式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以及servfox移植笔记

boa以及servfox移植笔记

Boa移植1.修改CC=此为自己的交叉编译路劲(which arm-linux-gcc查看交叉编译路劲)2.修改CPP =此为自己的交叉编译路劲–ELDFLAGS = -g -static(添加静态编译选项)。

3../configure 生成Makefile修改src/compat.h找到#define TIMEZONE_OFFSET(foo) foo## ->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff修改define.h找到#define SERVER_ROOT “/etc/boa”修改为#define SERVER_ROOT “/root/myfile/myboa/server”这里定义的web服务器的文件根目录(用户可以自己定义,只要跟boa.conf中的定义一致就可以)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 0if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {DIE(”initgroups”);}#endif④boa.c:228 - icky Linux kernel bug!: No such file or directory解决办法: 修改src/boa.c注释掉下面语句:if (setuid(0) != -1) {DIE(”icky Linux kernel bug!”);}即修改为:#if 0if (setuid(0) != -1) {DIE(”icky Linux kernel bug!”);}#endif4.make5.arm-linux-strip boa6.修改boa.conf文件7.port 80er 09.Group 010.#ServerAdmin root@localhost11.#ErrorLog /var/log/boa/error_log12.#AccessLog /var/log/boa/access_log13.S erverName .here14.D ocumentRoot /root/myfile/myboa/server15.D irectoryIndex index.html16.#DirectoryMaker /usr/lib/boa/boa_indexer17.K eepAliveMax 100018.K eepAliveTimeout 10019.M imeTypes /root/myfile/myboa/server/mime.type20.D efaultType text/html21.#Alias /doc /usr/doc22.S criptAlias /cgi-bin/ /root/myfile/myboa/server/cgi-bin23.S criptAlias /index.html/ /root/myfile/myboa/server/http-java-applet (23可以没有)在root目录下创建:/root/myfile/myboa/server/在server下创建cgi-bin、http-java-applet、并将PC上/etc/mime.types文件拷贝到开发板server目录下在/root/myfile下创建bin目录将可执行文件boa复制到bin目录下移植servfox24.【移植servfox】其实spcaview也可以做采集端。

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使⽤。

boa 服务器移植到arm

boa 服务器移植到arm

BOA移植详解+cgi一、Boa程序的移植1、下载Boa源码下载地址:/目前最新发行版本:0.94.13(几年没更新版本了)下载boa-0.94.13.tar.gz,解压:[root@Localhost source]$tar xzf boa-0.94.13.tar.gz2、生成Makefile文件进入boa-0.94.13,直接运行src/configure文件[root@Localhost src]$./configure3、修改Makefile文件把arm-linux-gcc加入到PATH路径信息中CROSS=arm-linux-CC=$(CROSS)gccCPP=$(CROSS)gcc-E#CC=gcc#CPP=gcc-Earm-linux-gcc:installation problem,cannot exec`cpp0':?????????arm-linux-gcc:installation problem,cannot exec`cpp0':?????????arm-linux-gcc:installation problem,cannot exec`cc1':?????????arm-linux-gcc:installation problem,cannot exec`cpp0':No such file or directory解决的办法,把arm-linux-gcc安装在他的默认目录。

2.95.3/usr/local/arm/2.95.3/bin/(注意:必须用cross-2.95.3,如使用3.4.1、4.1.1等等会出错或x86gcc或mipsel-linux-gcc都会报如下的错误,修改后错误不再出现)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]Error1解决方法:修改src/compat.h#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff修改成#define TIMEZONE_OFFSET(foo)(foo)->tm_gmtoff4、交叉编译[root@Localhost src]$make5、去除调试信息,减小体积,大约能减小一半还多。

小型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.%现代通信技术和计算机技术都迎来了显著的发展,各个应用领域都要求将可移动设备接入网络。

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

Boa服务器ARM板上的移植方法
一、boa服务器移植前的准备
网上下载boa服务器tar源码包
二、boa服务器配置流程
2.1.解压下载来的tar包
在linux终端命令行输入:tar –xf boa_xxx.tar
2.2. 配置boa选项
1. 修改boa.conf生效的目录
cd /src目录下修改defines.h文件
修改第30行,将默认的路径为/usr/boa 改为/home/boa
2.修改src/boa.c
注释掉226行的语句:
if (setuid(0) !=-1)
{
DIE(”icky Linux kernel bug!”);
}
即修改为:
#if 0
if(setuid(0) != -1)
{
DIE(”icky Linux kernel bug!”);
}
#endif
否则运行boa时会提示
boa.c:226 - icky Linux kernel bug!: No suchfile or directory错误
3. 修改boa.conf文件
打开boa.conf文件:vim boa.conf
将94行前面的#去掉
2.3. 编译配置好的boa
1. 切换到boa源码包src下运行configure
在linux终端命令行输入:./configure
2. 修改Makefile文件
将31行的
CC = gcc
修改为:CC=arm-none-linux-gnueabi-gcc
将32行的
CPP=gcc –E
修改为:CPP=arm-none-linux-gnueabi-g++ -E
3. 编译boa源码包
在linux终端命令行输入:make –j2
等待一段时间再输入:echo $? (如果显示为0说明编译成功,反之失败)
在当前目录下生成一个boa的可执行程序,./boa运行即可,
在命令行输入:ps –e (能看到boa的进程即说明boa正常工作移植成功)
将boa可执行文件拷贝到/etc/bin/下
4. 移植完成一大半
注:有些编译器会提示以下错误,按相应方法解决即可.
出现错误:
util.c: 100: 1: pasting “t”and “->”does not give a valid preprocessing token make: [util.o]
Error1
解决方法:
修改compat.h中122行的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
为:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
修改compat.h中126行的
#define TIMEZONE(foo) foo##->tm_zone
为:
#define TIMEZONE(foo) foo->tm_zone
三、boa服务器boa.conf文件的设置
1.ARM板上建立/usr/boa目录, 并复制boa.conf到/usr/boa目录下
#mkdir /usr/boa
#cp boa.conf /usr/boa
2.访问端口号设置
大概25左右:Port 80,可以设定我们访问网页时的端口号默认为80—访问时无需指定假如改变了此端口号为8080,必须以下列格式访问:
http://192.168.0.250:8080一般在同一个电脑上运行多个boa服务器时可采用此
方法我们这里保持默认即可
3. 修改访问权限:
修改User nobody 为user 0
修改Group nogroup 为group 0
4. 设定日志目录:boa日志有两部分,Errorlog 和AccessLog
默认为/var/log/boa/error_log和/var/log/boa/access_log两个文件。

所以我们统一修改为:
ErrorLog /usr/boa/error_log
AccessLog /usr/boa/access_log
(注意:这里/usr/boa目录必须为可写,否则会出项错误:log.c:73 –Unable to
dup2 the error log: Bad file r.)
5. 设置html文件目录:
默认为:DocumentRoot /var/www
我们统一修改为:
DocumentRoot /usr/boa/www
6. 设置默认首页:
DirectoryIndex index.html
这是访问网页时若不指定访问的网页名称,服务器默认返回的网页,我们不做修改(在www的目录下必须包含一个index.html)
7. 设置cgi脚本目录:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin
修改为
ScriptAlias /cgi-bin/ /usr/boa/cgi-bin
(注:boa提供cgi编程接口,使得网页具有交互能力,后面我们在做讲解.)8.测试
在/usr/boa/www中随意放一个测试网页(必须包含index.html文件)
我们这里随便建一个文件取名为index.html,里面写一个:hello boa...
在IE中敲入:http://192.168.0.250/ 即可看到刚才的helloo boa
证明整个boa搭建成功(注:192.168.0.250为ARM板的IP地址)。

相关文档
最新文档