嵌入式Web开发——Boa服务器移植

百度百科上关于 Boa 的说明:

  BOA 服务器是一个小巧高效的 web 服务器,是一个运行于 unix 或 linux 下的,支持 CGI 的、适合于嵌入式系统的单任务的http服务器。
  源代码开放、性能高。由于它是一个单任务的 Web 服务器,只能一次完成用户的请求,而不会 fork 出新的进程来处理并发的链接请求。但是 Boa 支持 Cgi,能够为 Cgi 程序 fork 出一个进程来执行相应的客户请求。


  Boa 是一个单任务的 HTTP Web 服务器,支持认证、CGI 脚本等,功能比较全,性能比较高。它和传统 Web 服务器的主要区别是:它是单进程的,在接到新的 HTTP 请求时并不 fork 出一个新的进程来响应,不能同时处理多个到来的连接,而且不能将自己复制多个副本来处理多连接。它在内部处理所有正在进行的 HTTP 连接请求,只对单独的 CGI 程序、自动文件的产生、自动文件的解压等请求 fork 出新进程。它的优点是代码简单、速度快、适合于嵌入式应用
  值得一提的是,Boa 是一款完全开放源码的免费软件,用户可以随时从官方网站上获取 Boa 的最新版本并编译运行于不同的操作系统平台。

Boa 移植
(Boa 的版本为 0.94.13,下载地址:http://download.csdn.net/detail/luckydarcy/9621635

(1) 从 Boa 的官方网站(http://www.boa.org)上获取最新版的软件源代码。

(2) 解压下载的源代码压缩包。

(3) 进入解压目录的 src/ 目录下,输入 ./configure 命令,生成 Makefile 文件。

(4) 修改 src/compat.h 文件,将

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

修改为

#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

(5) 运行 make 命令,即可生成运行于 x86 Linux 平台的 Boa 二进制文件。

(6) 修改 boa.c 文件,注释掉

if (passwdbuf == NULL) {
    DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
    DIE(”initgroups”);
}

if (setuid(0) != -1) {
    DIE(”icky Linux kernel bug!”);
}

(7) 修改 Makefile 文件,将

CC=gcc
CPP=gcc -E 

改为实际使用的编译工具链,如

CC=arm-linux-gcc
CPP=$(CC) -E

(8) 运行 make clean,再运行 make 命令,即可生成运行于 ARM Linux 平台的 Boa 二进制文件。


Boa 配置
  完成上面步骤后还无法启动 Boa 服务,因为还未对 Boa 进行配置,需要对 boa.conf 文件进行相应的配置才行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿基米东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值