移动物体监控系统(4)—嵌入式web服务器的移植

一、BOA嵌入式服务器移植

1. BOA简介

  • Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右,作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全,是目前嵌入式领域比较流行的web服务器,智能家居的网关大部分也采用该web服务器作为主要架构。

2. 编译BOA

  1. 获取boa源代码
  2. 生成Makefile:进入boa源代码的src目录,执行./configure命令即可生成编译boa所必须的配置文件以及一些源代码和Makefile文件;
  3. 修改Makefile:找到CC=gcc,将其改成CC = arm-linux-gcc,再找到CPP = gcc –E,将其改成CPP = arm-linux-gcc –E,并保存退出。
  4. 修改源代码:Boa本身代码是存在些许bug的,我们要对这些bug进行修复。之所以这里能直接给出代码修改的步骤,是由于我们之前做了大量的实验,已经可以断定哪里的代码出了问题,这样避免大家少走弯路。
  • a. 将util.c的第100行注释掉,改为 //time_offset = TIMEZONE_OFFSET(t);time_offset = 0;保留以前的代码,将其注释就可以,以便以后排查原来代码内容。不修改这里会出现以下错误:util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token
  • b. 将boa.c中210行到229行代码注视掉;否则boa运行的时候会出现DIE的现象,打印各种找不到密码的信息而停止进程。注释如下:
#if 0

if (passwdbuf == NULL) 
{

    DIE("getpwuid");

}

…    …

/* test for failed-but-return-was-successful setuid

* http://www.securityportal.com/list-archive/bugtraq/2000/Jun/0101.html

*/

if (setuid(0) != -1) 
{

    DIE("icky Linux kernel bug!");

}

#endif
  •  编译完以后将可执行文件boa复制到开发板的根文件系统下即可。

3. 配置BOA

  • 虽然前面已经编译好了可在ARM平台运行的boa服务器程序,但是boa要真正能工作的话,还必须要有合适的配置文件才可以。而在boa源代码的顶层目录已经有了一个默认的boa.conf配置文件,但是我们需要针对自己的情况对一些配置选项进行修改,可以用boa.conf作为基础进行修改,将他复制到开发板文件系统的/etc/boa目录(自己新建)下。这里列出了常用的配置选项和含义:

选项名

说明

Port

监听的端口号,缺省都是80,一般无需修改

User

作为哪个用户组运行,即它拥有该用户组的权限,一般都是nobody,需要/etc/passwd中有nobody用户。所以这里我们将其注释掉

Group

作为哪个用户组运行,即它拥有该用户组的权限,一般都是nogroup,需要在/etc/group文件中有nogroup组。也注释掉

ErrorLog

错误日志文件。如果没有以/开始,则表示从服务器的根路径开始。如果不需要错误日志,则用/dev/null。设置为/dev/console表示错误信息打印到终端。在调试阶段建议改成/dev/console调试稳定以后改成null或者具体的文件

AccessLog

访问日志文件。如果没有以/开始,则表示从服务器的根路径开始。如果不需要错误日志,则用/dev/null或直接注释掉。

ServerName

服务器名字。

DocumentRoot

HTML文档的主目录非常重要,boa毕竟是为网页服务的,所以这个参数指明了开发板上什么地方有网页文件,如果不指定正确的html文件的存放路径,访问会出错。如果没有以/开始,则表示从服务器的根路径开始。这里拷贝我们提供的web目录到开发板的文件系统根目录即可因此这里设置为/web/

DirectoryIndex

HTML目录索引的文件名,也是没有用户只指明访问目录时返回的文件名。

KeepAliveMax

一个连接所允许的HTTP持续作用请求最大数目,注释或设为0都将关闭HTTP持续作用。

KeepAliveTimeout

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值