web服务器Boa移植手册

合集下载

ARM嵌入式Web服务器Boa的软、硬件设计 毕业设计

ARM嵌入式Web服务器Boa的软、硬件设计 毕业设计

摘要论文主要介绍了基于ARM9的嵌入式Web服务器Boa的软、硬件设计及其实现,其中硬件部分的核心是三星的S3C2410X为处理器。

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

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

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

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

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

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

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

关键词:ARM;Linux;嵌入式Web服务器;CGIThis paper has mainly developed the software hardware design and realization of the embedded Web server Boa based on ARM. And the core of the hardware part is S3C2410X microprocessor produced by Samsung . The final achievement is the embedded webserver which can remote visit. Boa is a single-tasking HTTP server. That means that unlike traditional webservers, it does not fork for each incoming connection, nor does it fork many copies of itself to handle multiple connections. It internally multiplexes all of the ongoing HTTP connections. And forks only for CGI programs, this is very important to embedded system. At the same time, it also has the function of automatic directory generation、automatic file gunzipping and so on. So Boa is of highly value in the embedded system application.Keywords: ARM;Linux;Embedded Web server;CGI摘要 (1)Abstract (2)目录 (3)第一章引言 (5)第二章课题背景 (6)2.1 嵌入式系统简介 (6)2.2 嵌入式系统和Linux (6)2.3 ARM9硬件平台 (7)2.3.1 ARM简介 (7)2.3.2 JXARM9-2410 ARM嵌入式教学实验系统 (8)第三章嵌入式Web服务器 (9)3.1 概述 (9)3.2 Web服务器原理 (9)3.3 嵌入式Web服务器实现原理 (9)3.3.1 TCP/IP协议 (9)3.4 嵌入式Web服务器Boa (10)3.4.1 Boa概述 (10)3.4.2 Boa的功能实现 (11)第四章CGI技术 (12)4.1 CGI概述 (12)4.2 CGI工作原理 (12)第五章建立嵌入式系统开发环境 (14)5.1 在Vmware下安装Redhat 9.0 (14)5.2 编译配置主机开发环境 (18)5.2.1 配置以太网 (18)5.2.2 安装配置tftp服务器 (19)5.2.3 配置防火墙 (21)5.2.4 配置NFS服务器 (22)5.3 JXARM9-2410中U-boot烧写 (22)5.3.1 u-boot的功能 (22)5.3.2 使用ADT IDE烧写u-boot (23)第六章系统功能的实现 (25)6.1 GCC简介 (25)6.1.1 GCC概述 (25)6.1.2 GCC基本用法 (25)6.2 Linux内核移植 (26)6.2.1 Linux内核源代码的安装 (26)6.2.2 Linux交叉编译环境的建立和使用 (27)6.2.3 Linux内核的配置和编译 (27)6.3 加载Linux内核映像 (30)6.4 Boa Web服务器的移植 (31)6.4.1 Boa Web服务器的建立 (31)6.5 Linux下动态Web页面的实现 (32)6.5.1 CGI程序分析 (32)6.5.2 Form输入的分析和解码 (34)第七章系统功能的测试 (36)7.1 测试Web服务器 (36)7.2 动态Web页面测试 (37)结束语 (40)致谢 (41)参考文献 (42)附录 (43)第一章引言随着计算机技术的发展,嵌入式系统已成为计算机领域的一格重要组成部分。

Boa的下载、编译、配置

Boa的下载、编译、配置
Boa的下载、编译、配置
默认分类 2008-06-10 13:52 阅读126 评论0 字号: 大大 中中 小小 Boa的下载、编译、配置
1、 进入linux中/home目录下,用wget /boa-0.94.13.tar.gz 下载boa源文件包。
2、 解压boa-0.94.13.tar.gz ,用tar zxvf boa-0.94.13/src命令进入到src目录。
4、 在命令行中输入 ./configure 生成Makefile文件。
5、 在命令行中输入make编译boa。
8、 vi /etc/boa/boa.conf 编辑配置boa,A、port 监视的端口号(一般不修改),port 80。B、user 设置为nobody最好设置为root ,user nobody。C、listen 监视的ip,一般注释掉,通配于服务器的IP地址,#listen 192.168.0.20。D、Group 设置,要在/etc/group文件内容中有的组才行,也可以设为Group 0,则表示没有Group。E、Errorlog 设为Errorlog /var/log/error_log,Accesslog设为Accesslog /var/log/boa/access_log, (前两个选项也可以设为/dev/null表示不要错误信息,或者注释了),目录在6项已经设建好。F、uselocaltime 是否使用本地时间,若注释掉的话就使用UTC时间。G、VerboseCGILogs 是否使用CGI错误信息记录,注释掉表示不记录。H、DocumentRoot 非常重要,html文本文档的目录,我设为DocumentRoot /var/www/。I、Directoryhtml html目录文件名的索引,我设为Directoryhtml index.html,也可以设为Directoryhtml index.asp。J、Defaluttype text/plain 文件扩展名没有或未知的话,使用缺省的MIME类型。K、CGIpath /bin:/usr/bin:/local/bin提供cgi程序的path环境变量(用cgi开发才用到)。L、scriptAlias /cgi-bin/ /var/www/cgi-bin,指明cgi脚本的虚路径对应的实际路径,一般所有的CGI程序都放在实际路径中

移植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,我想应该是我的板上没有它动态运行时的库文件,或者指定的库文件路径不对(还没检查),不过这样编译生成的文件就很大。

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

实验14 Webserver的移植实验

实验14 Webserver的移植实验

实验14 Webserver的移植与网络通讯实验第1步:Boa程序的移植;(1)从/ 下载boa-0.94.13.tar.gz源码(或光盘中提供);(2)将下载下来的文件复制到linux的/work目录下,利用tar zxvf boa-0.94.13.tar.gz减压缩boa-0.94.13.tar.gz文件。

(3)切换到boa-0.94.13/src目录执行./configure对其进行配置。

(4)用vi编辑器修改src/Makefile 文件。

找到CC=gcc,改成CC = arm-linux-gcc;找到CPP= gcc –E,修改成CPP = arm-linux-gcc –E。

(5)用vi编辑器修改src/compat.h文件。

找到#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff,修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff。

(6)执行make命令,编译boa。

(7)执行arm-linux-strip boa 将最终程序 boa 中的调试信息剥去,减小其体积。

第2步:Boa的配置和安装(1)用vi编辑器修改boa-0.94.13/boa.conf文件。

将Group nogroup修改为Group 0;将ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/修改为ScriptAlias /cgi-bin/ /var/www/cgi-bin/;将#ServerName .here 去掉前面的#号。

(2)在目标板上的Linux 中建立相应的目录:在/etc下建立boa目录,在/var下建立log、www目录,在/var/log下建立boa目录,在/var/www下建立cgi-bin目录。

(3)将下列文件拷贝到目标板的相应目录:(将需要复制到目标板的文件复制到宿主机的/mnt/nfs文件夹下,以nfs方式将宿主机的目录挂载到目标机上,然后将文件复制到(4)设置好网络参数,后台运行boa:(5)并在浏览器中输入:http://192.168.1.50,进行测试。

嵌入式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使⽤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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!”);
四、运行 boa 程序
在 windows 下通过 http://192.168.1.230(虚拟机的 IP 地址)这种形式访问,进行测试。
五、移植到开发板
1、(第一.3 步)操作完成之后,修改 Makefile 文件,将 CC = gcc CPP = gcc -E 改为: CC = arm-linux-gcc CPP = arm-linux-gcc -E #make #arm-linux-strip boa //去掉调试信息,减少 boa 体积 2、拷贝 PC 上/etc/mime.types 文件到开发板/etc 目录下,如果不用 mimi.types,可将 boa.conf 文件中 MimeTypes /etc/mime.types 修改为: MimeTypes /dev/null boa 配置相关目录 1、boa.conf 的存放目录: 默认 boa.conf 是在/etc/boa.conf 目录的,boa 运行时会自动去找/etc/bon.conf 目录。这个设定 是在 define.h 文件中定义的,可在编译之前进行修改。 2、log 目录: 分为 Errorlog 和 AccessLog 两个目录,可在 boa.conf 中修改。如: ErrorLog /var/log/boa/error_log AccessLog /var/log/boa/access_log 3、html 文件存放目录, 可在 boa.conf 文件中修改。如: DocumentRoot /var/www 4、cgi 脚本存放目录, 可在 boa.conf 文件中修改。如: ScriptAlias /cgi-bin/ /var/www/cgi-bin 5、mime.types 存放目录, 可在 boa.conf 文件中修改。如:
web 服务器 Boa 移植手册
说明:
交叉编译器版本: arm-linux-gcc 4.1.2
操作系统平台: Linux Red Hat 9.0
开发板平台: arm TX2440A
Boa版本: boa-0.94.13
手册中字体颜色的约定: 修改的代码用红色字体 添加的大段代码用蓝色字体 执行的命令用红色字体,前面加 # 在终端上打印出的信息用紫色字体 出现的错误信息用绿色字体 说明的文字用红色粗体 需要修改的文件加灰色底纹
4
} 即修改为: #if 0 if (setuid(0) != -1) { DIE(”icky Linux kernel bug!”); } #endif 5、log.c:73 unable to dup2 the error log:bad file descriptor 解决方法: 方法 1> 确定日志目录对与所有用户都具有可读/写的权限 方法 2> 修改 src/log.c (建议采用方法 1)注释掉 if (dup2(error_log, STDERR_FILENO) == -1) { DIE("unable to dup2 the error log"); } 即修改为: #if 0 if (dup2(error_log, STDERR_FILENO) == -1) { DIE("unable to dup2 the error log"); } #endif
二、修改配置文件 boa.conf
1、建立/etc/boa 目录, 并复制 boa.conf 到/etc/boa 目录下,并按照以下步骤进行修改。 2、修改访问权限:修改 User nobody 为 User 0,修改 Group nogroup 为 Group 0。 3、设定日志目录:boa 日志有两部分,Errorlog 和 AccessLog,一般情况下为/var/log/boa/error_log 和/var/log/boa/access_log 两个文件。所以根据自己的情况情况设置日志目录: ErrorLog /var/log/boa/error_log AccessLog /var/log/boa/access_log 注意:这里/var/log/boa 目录必须为可写,否则会出现错误:log.c:73 – Unable to dup2 the error log: Bad file r. 在启动脚本里将 var 挂载成 ramfs: mount –n –t ramfs ramfs /var 4. 设置 html 文件目录: DocumentRoot /var/www 5. 设置默认首页: DirectoryIndex index.html 6. 设置 cgi 脚本目录: 将 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin 修改为 ScriptAlias /cgi-bin/ /var/www/cgi-bin 这些目录可以自己修改,但是要步设置建立相关文件夹并放入文件
1、根据(第二.3 步)的设置建立/var/boa 文件夹。 2、根据(第二.4 步)的设置建立/var/www 文件夹, 并在此目录下存放 html 文件,包括 index.html 文件。 3. 根据(第二.6 步)的设置建立/var/www/cgi-bin 文件夹, 并存放一些用来测试的 cgi 脚本。
5
相关文档
最新文档