`

ARM-Linux下WEB服务器Boa的移植、配置和运行测试

 
阅读更多

Linux下使用的轻量级WEB服务器主要有:lighttpd、thttpd、shttpd和boa等等,而Boa是使用最为广泛的轻量级WEB服务器之一(当然,阿帕奇是世界使用排名第一的Web服务器软件)。Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。

工具链为:arm-hismall-linux-gcc,海思平台。


一、Boa移植

1.下载boa-0.94.13.tar.gz

http://download.csdn.net/detail/huangminqiang201209/5769107

2.编译

[root@localhostweb]#tar xzvf boa-0.94.13.tar.gz

[root@localhostweb]#cd boa-0.94.13

[root@localhostboa-0.94.13]#cd src/

[root@localhostsrc]#./configure//生成Makefile

[root@localhostsrc]#vi Makefile

30:CC = gcc

31:CPP = gcc -E

该为:

CC= arm-hismall-linux-gcc

CPP= arm-hismall-linux-gcc -E

[root@localhostsrc]# vi compat.h

120:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff //##的作用是把2个参数合并到一起

修改成

#defineTIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

[root@localhostsrc]# vi log.c

72:if (dup2(error_log, STDERR_FILENO) == -1) {

DIE("unable to dup2 the errorlog");

}

为(即屏蔽):

/*if (dup2(error_log, STDERR_FILENO) == -1){

DIE("unable to dup2 the errorlog");

}*/

[root@localhostsrc]#vi boa.c

73:if (dup2(error_log, STDERR_FILENO) == -1) {

DIE("unable to dup2 the errorlog");

}

为(即屏蔽):

/*if (dup2(error_log, STDERR_FILENO) == -1){

DIE("unable to dup2 the errorlog");

}*/

211: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

[root@localhostsrc]# make

[root@localhostsrc]#arm-hismall-linux-strip boa//去除调试信息减小体积。可选

二、配置Boa

1boa.conf

Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。

[root@localhost src]# cd ..

[root@localhost boa-0.94.13]# vi boa.conf

(1)Group的修改

修改Group nogroup为Group 0 //开发板上有的组,设为0

(2)user的修改

修改User nobody为User 0

(3)Alias的修改

修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 为 Alias /cgi-bin/ /www/cgi-bin/

(4)DoucmentRoot的修改

修改DoucmentRoot /var/www 为DoucmentRoot /www

(5)ServerName的设置

修改#ServerName www.your.org.here为 ServerName www.your.org.here,否则会出现错误“gethostbyname::No such file or directory”

(6)AccessLog修改

修改AccessLog/var/log/boa/access_log为#AccessLog /var/log/boa/access_log,否则会出现错误提示:“unable to dup2 the errorlog: Bad file deor”

2)开发板etc配置

/etc $mount-t nfs -o nolock 192.168.1.211:/work/nfs /nfs

/etc $cp/nfs/mime.types .

/etc $mkdir boa

/etc $cd/boa

/etc/boa $ cp /nfs/web/boa-0.94.13/boa.conf.

/etc/boa $cp/nfs/web/boa-0.94.13/src/boa .

/etc/boa $mkdir /www

/etc/boa $ mkdir -p/www/cgi-bin

3)运行boa

/etc/boa $./boa

[16/Jul/2013:19:22:51+0000] boa: server version Boa/0.94.13

[16/Jul/2013:19:22:51+0000] boa: server built Jul 17 2013 at 10:38:13.

[16/Jul/2013:19:22:51+0000] boa: starting server pid=718, port 80

三、Boa测试

1)静态网页测试

将静态网页存入根文件系统的/www目录下(/1.jpg即为/www/1.jpg)
/www $ cat index.html
<html>
<body>

<h1>My First Heading </h1>
<p>This is a paragraph</p>
<h2>My First Heading </h2>
<a href="http://www.baidu.com">This is a link</a>
<img src="/1.jpg" width="104" height="142" />

</body>
</html>

直接在浏览器中输入开发板的IP地址(比如我的是http://192.168.1.66) ,出现如下画面。静态HTML调试成功。


2)CGI功能测试

1)生成GCI可执行程序

[root@localhost for_test]# cat helloworldCGI.c

#include<stdio.h>

#include<stdlib.h>

int main(void)

{

printf("Content-type: text/html\n\n");

printf("<html>\n");

printf("<head><title>CGI Output</title></head>\n");

printf("<body>\n");

printf("<h1>Hello,world.</h1>\n");

printf("<body>\n");

printf("</html>\n");

exit(0);

}

[root@localhost for_test]# chmod 777 helloworldCGI.c

[root@localhost for_test]# arm-hismall-linux-gcc helloworldCGI.c

2)开发板端

/etc/boa$cp /nfs/for_test/a.out /www/cgi-bin/

3)浏览器

在浏览器输入: http://192.168.1.66/cgi-bin/a.out ,网页出现 Hello,world. 调试成功!

四、参考文献

boa web服务器移植:http://blog.chinaunix.net/uid-25544300-id-3227511.html

三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记:http://blog.chinaunix.net/uid-26921272-id-3322975.html


希望对你有所帮助


分享到:
评论

相关推荐

    Arm-linux入门手册.pdf

    包含初学ARM时的交叉编译环境的配置,数据库SQLite3的交叉编译与移植,Web服务器BOA的交叉编译与移植,嵌入式CGI编程和ARM串口编程。及其相关出现问题解决方法。程序代码纯属原创。

    boa web服务器 ARM9下 linux编译移植成功

    嵌入式web服务器支持CGI编程 移植到ARM板上修改权限 chmod +x boa 再输入 # boa & 后台运行

    Boa.rar_EM_arm boa web server_boa_linux boa

    移植Boa Web服务器到ARM-Linux&mipsel-linux系统的有关资料

    基于Arm Linux的嵌入式Web服务器的研究

    网络在人们生活中应用越来越广泛,在嵌入式系统中使用网络系统也自然成为一项需求,通过Web方式实现对嵌入式设备的远程监控成为必然趋势。...以及在Linux下移植Boa服务器的方法,并运用CGI技术实现动态网页的制作。

    9260_Linux 移植文档.pdf

    8.移植Boa Web 服务器 9.移植网络摄像头 10.移植Madplay 音频播放器 11.ARM MPlayer 移植 12.AT91SAM 芯片的启动过程 附录1:安装VMWARE+READHAT9 环境 附录2:如何安装虚拟工具和网络设置

    web服务器Boa移植手册(完整详细资料).pdf

    说明:Boa服务器的移植可分成两部分,一个是在x86平台上移植,即在虚拟机的linux下,另一个是在arm平台上移植,即在开发板上的linux下,本手册的前四步,都是在虚拟机上做移植,第五步是移植到发开板上。

    嵌入式boa服务器arm平台移植源码

    Boa Webserver http://www.boa.org/ 2.解压 tar -xf boa-0.94.13.tar.gz 3.安装词法解析器 sudo apt-get install bison sudo apt-get install flex 4.修改源码 4.1 src/compat.h vi src/compat.h +119 改...

    嵌入式系统/ARM技术中的嵌入式web服务器boa的移植笔记

    在这里我只把我个人移植过程中经验和大家分享下,希望能对大家的学习有帮助。 我是在uclinux下移植的boa。uclinux跑通后,要看看网卡有没有通,用板子ping主机或者主机ping板子都是可以的。如果这个不通的话,后面就...

    嵌入式linux2.6常见开源工程的移植

    第三节:boa web服务器在PC上移植 第四节:boa web服务器在S3C2440开发板上移植 第五节:boa移植过程中出现的问题 第六节:sqlite-3.7.6.2在PC及S3C2440平台移植 第七节:ffmpeg视频编码库S3C2440移植 第八节:...

    郭天祥ARM9视频教程(第13和20讲均可观看).docx

    2. 移植嵌入式web服务器Boa 3. 移植madplay音乐播放器 第八部分 嵌入式驱动开发 第十九讲 Linux字符设备驱动 1. 嵌入式设备驱动概述 2. Linux字符设备驱动结构 3. 字符设备驱动程序设计实例 4. 中断和同步的处理 第...

    基于嵌入式Linux的远程视频监控系统

    和控制器S3C2440为核心平台,通过嵌入式平台建立Web服务器Boa和视频服务器。通过 基于TCP/IP的socket编程实现网络通信,将USB摄像头采集到的图像数据进行压缩并通 过网络传输传送到视频服务器客户端。客户端可接受...

    嵌入式Linux入门笔记(十年程序员精品推荐、让你看得懂的笔记、结合开发板例程精心讲解)

    嵌入式WEB服务器…… 1. Boa移植… … 2.WEB应用开发……… 五.NFS的配置. 1.主机的NFS服务器配置… 2.目标机的NFS客户端配置……… 3.出现的问题…… 第三阶段在项目中应用Linux.… 一.进程间隔定时器…… 1.概念. ...

    基于ARM11的嵌入式Web监控系统的研究与实现

    其次详细讨论了嵌入式web服务器boa以及cgic库的移植并建立Boa服务器实现浏览器与嵌入式Web 服务器之间的动态交互。最后通过移植MJPG-streamer 开源软件,实现了嵌入式Web 视频实时监控。该嵌入式监控系统构建灵活,...

    基于ARM9处理器的家用远程医疗监护终端结构功能及应用

    首先基于ARM9处理器S3C2410A和嵌入式Linux操作系统,设计出支持嵌入式Web Server的开发平台,再通过移植嵌入式Web Server—boa,配合数据采集和处理等模块,构造一套适用于家庭的便携式远程医疗监护终端。...

    运动目标检测报警系统的设计与实现 (2013年)

    通过在三星S3C2440A型ARM处理器上植入Linux操作系统,并加载摄像头驱动和移植开源软件motion和madplay等来实现对物体的运动图像进行检测并锁定运动目标从而实时报警,通过boa服务器在客户端用web浏览器浏览打开保存的...

Global site tag (gtag.js) - Google Analytics