嵌入式web服务器Boa的移植

``嵌入式web服务器Boa的移植

什么是Boa服务器

BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。

操作环境

ubuntu12.04+fs4412开发板

具体操作

在ubuntu中进行:

1.下载:http://www.boa.org/

2.解压:tar xzf boa-0.94.13.tar.gz

3.进入解压的目录:cd boa-0.94.13/src

4.运行:**./configure **

5.第四步运行生成一个Makefile文件,如果此时直接make,将会有错误,需要修改Makefile.

6.修改Makefile:CC=gcc 改为 CC = arm-linux-gcc
CPP=gcc -E改为 CPP = arm-linux-gcc -E

7.此时make依然大概率出错:需要修改compat.h

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改为:
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
修改 src/log.c,注释掉:

if (dup2(error_log, STDERR_FILENO) == -1) {
DIE(“unable to dup2 the error log”);
}

修改 *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

8.安装编译需要的工具

sudo apt-get install bison flex

9.此时进行make,如果以前make过,再次make时需要先执行make clean
否则会出现错误:

y.tab.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [boa] Error 1

10.此时查看生成的boa文件大小

ls -l boa
-rwxrwxr-x 1 farsight farsight 211921 11月 3 09:12 boa

11.进行瘦身操作:arm-linux-strip boa
前后效果对比:

ls -l boa
-rwxrwxr-x 1 farsight farsight 60440 11月 3 09:16 boa

12.进行Boa配置:

在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。如下:
#vi boa.conf

(1)Group的修改

修改 Group nogroup

Group 0

(2)user的修改

修改 User nobody

User 0

(3)ScriptAlias的修改

修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

(5)DoucmentRoot的修改

DoucmentRoot /var/www

(6)ServerName的设置

修改**#ServerName www.your.org.here**

ServerName www.your.org.here

否则会出现错误“gethostbyname::No such file or directory

(7)AccessLog修改

修改AccessLog /var/log/boa/access_log

为**#AccessLog /var/log/boa/access_log**

否则会出现错误提示:“unable to dup2 the error log: Bad file descriptor”

13.以下配置和boa.conf的配置有关,都是在ARM根文件系统中创建
在开发板上进行操作:

创建目录/etc/boa并且把boa 和 boa.conf拷贝到这个目录下

mkdir /etc/boa

创建HTML文档的主目录/www

mkdir /var/www/cgi-bin

CGI脚本所在录 /var/www/cgi-bin

以下步骤在ubuntu12.04下进行:

将boa.conf拷贝到开发板根文件系统的/etc/boa下

#cp boa.conf /source/rootfs/etc/boa

将boa拷贝到开发板根文件系统的/bin下

#cp src/boa /source/rootfs/bin

将ubuntu下/etc/mime.types拷贝到开发板根文件系统的/etc下

#cp /etc/mime.types /source/rootfs/etc

将你的主页index.html拷贝到 /var/www 目录下

进行测试

如果我们要访问一个自己制作的网页(hello.html),可以在浏览器中输入http://192.168.0.252/hello.html,这里的IP地址就是开发板的IP地址。

可能出现的错误

1.在开发板上执行可执行文件,出现了错误: line 1: syntax error: unexpected “(”
是使用了gcc 命令编译造成的。
解决办法:使用交叉编译链重新进行编译即可

大神链接:https://blog.csdn.net/manchestermi/article/details/50826129

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值