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

)boa.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下WEB服务器Boa的移植、配置和运行测试的更多相关文章

  1. 嵌入式web服务器BOA的移植及应用

    嵌入式web服务器子系统 一.嵌入式web服务器的控制流程 如下图所示,嵌入式web服务器可实现通过网络远程控制嵌入式开发板,便捷实用. 控制流程:浏览器 --->>>嵌入式开发板 ...

  2. web服务器boa的移植

    1.下载官方网站 http://www.boa.org/ 我下载的是0.94.13版本 2.解压 tar -zxvf boa-0.94.13.tar.gz 3.进入src目录 ./configure ...

  3. Linux下Web服务器环境搭建LNMP一键安装包[20130911更新]

    2012年08月14日 ⁄ LNMP ⁄ 评论数 73 ⁄ 被围观 25,200次+ 最新版本:lnmp-2.4 安装说明:请保证服务器能够正常上网.服务器系统时间准确.yum命令可以正常使用! 1. ...

  4. Linux下svn服务器的安装与配置-备份-恢复-计划任务

    简介:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subvers ...

  5. Linux下NFS服务器的搭建与配置

    一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...

  6. Linux下Samba服务器的安装和配置

    第一步:sudo apt-get install samba smbclient 安装samba服务器. 第二步:打开/etc/samba/smb.conf文件,在末尾添加下面的字段: [用户名] c ...

  7. Linux下NFS服务器的搭建与配置(转载)

    一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...

  8. Linux下NFS服务器的搭建与配置(转)

    一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...

  9. Linux下FTP服务器(vsftpd)配置:

    1. vsftpd 安装:yum install vsftpd 2. 添加用于: useradd admin -d /home/data -s /sbin/nologin usermod -d /ho ...

随机推荐

  1. linux内核代码container_of

    它的作用显而易见,那就是根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针. typedef unsigned int __kernel_size_t; typedef __ke ...

  2. Oracle同义词 synonyms

    Oracle中的同义词: 总结:简单的一句话,Oracle中不同用户的表一般都只能够自己的所属的用户可以用,如果不想通过授权的方式授权给其他用户使用,那么创建表的时候在表名的前面加上 synonyms ...

  3. PigCms 回复消息 "域名授权错误! 您使用的微信平台或源码为盗版"

    本文地址:http://duwei.cnblogs.com/ Pigcms 将自动回复的API 写死了, 这里提供一个可用的API 在 PigCms/Lib/Action/Home/Weixinact ...

  4. codeigniter ,看完这些,就可以用它做项目了

    一.MVC 1,入口文件 唯一一个让浏览器直接请求的脚本文件 2,控制器 controller 负责协调模型和视图 3,模型 model 只负责提供数据,保存数据 4,视图 只负责显示,以及搜集用户的 ...

  5. HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)

    虽然是一道还是算简单的DP,甚至不用滚动数组也能AC,数据量不算很大. 对于N个数,每个数只存在两个状态,取 和 不取. 容易得出状态转移方程: dp[i][j] = dp[i - 1][j ^ a[ ...

  6. 利用Tomcat的用户名和密码构建“永久”后门

    从本案例中可以学到: (1)关于JSP的一些基础知识 (2)利用Tomcat的用户名和密码来构建后门 本文首先要感谢<黑客手册>“非安全.后生”编辑为本为提供了帮助,还要感谢网友“伤心的鱼 ...

  7. php 原生或curl获取 http headers

    有一个函数: array get_headers ( string $url [, int $format = 0 ] ) Parameters url The target URL. format ...

  8. ios中的任务分段

    工作比较忙,蛮久没有写东西了,今天我要写的是ios中的任务分段.大多数的情况下,我们用不到任务分段,但是如果我们是在执行比较频繁的函数或者这个函数是比较耗时, 某一条件下,我要执行新的任务,并且取消上 ...

  9. 基于visual Studio2013解决算法导论之018栈实现(基于链表)

     题目 用链表实现栈 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #in ...

  10. 基于visual Studio2013解决C语言竞赛题之0522和为素

     题目