您的位置首页>企业动态>

基于嵌入式linux的Boa服务器移植

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解基于嵌入式linux的Boa服务器移植问题。Boa是一个非常小的Web服务器,其可执行代码只

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解基于嵌入式linux的Boa服务器移植问题。

Boa是一个非常小的Web服务器,其可执行代码只有60KB左右。作为单任务Web服务器,Boa只能轮流完成用户的请求,而不是分出新的进程来处理并发的连接请求。但是Boa支持CGI,可以创建一个进程让CGI程序分叉执行。宝儿的设计目标是速度和安全。

下面简单介绍一下Boa服务器移植的具体操作步骤,希望能有所帮助。

环境:ubuntu8.10跨工具链:gcc-3.4.5-glibc-2.3.6目标:s3c2410开发板

结合一些网上文献,整理出了一份比较完整的文献。

1.下载Boa源代码

下载地址: http://www.boa.org/

最新版本:0.94.13

下载boa-0.94.13.tar.gz

解压:#塔尔兹夫boa-0.94.13.tar.gz

2.安装需要工具bison,flex

sudo apt-get安装bison flex

否则,将出现以下错误

Make: yacc:命令找不到make: *** [y.tab.c]错误127

Make: lex:命令未找到make: *** [lex.yy.c]错误127

3.修改文件

(1)修改src/compat.h

发现

#定义时区_偏移量(foo) foo##-tm_gmtoff

修改为

#定义时区_偏移量(foo) (foo)-tm_gmtoff

否则,将会出现错误:

Util.c:100:1:错误3360粘贴“t”和“-”没有给出有效的预处理标记使: * * * [util.o]错误1

(2)修改src/logc

加注释

if (dup2(error_log,STDER _ FILENO)=-1){ DIE('无法dup2错误日志');}

用于:

否则,将会出现错误:

log.c:73无法复制错误日志:错误文件deor

(3)修改员工代表/主管

评论下面两句话:

if(passwdbuf==NULL){ DIE("getpwuid");} if(init group(passwdbuf-pw _ name,passwdbuf-pw _ GID)==-1){ DIE("init group");}

# if 0if(passwdbuf==NULL){ DIE("getpwuid");} if(init group(passwdbuf-pw _ name,passwdbuf-pw _ GID)==-1){ DIE("init group");}#endif

否则,将出现一个错误:boa.c:211-getpwuid 3360no这样的文件或目录。

评论以下陈述:

if (setuid(0)!=-1) {DIE(“恶心的Linux内核bug!”);}

#if 0if (setuid(0)!=-1) {DIE(“恶心的Linux内核bug!”);}

#endif

否则就会出现问题:boa.c:228-icky Linux内核bug!没有这样的文件或目录

4.生成Makefile文件

执行:

#cd boa-0.94.13/src#。/configure

5.修改Makefile

cd srcvim Makefile

将CC=GCC修改为CC=ARM-softfloat-Linux-GNU-GCC

将CPP=GCC-e修改为CC=ARM-soft float-Linux-GNU-GCC-e。

6.编制

makels-l boa-rwxr-xr-x 1 David David 189223 2009-05-31 13:44 boa

然后精简生成的二进制文件boa。

arm-soft float-Linux-GNU-strip boals-l boa-rwxr-xr-x 1 David David 61052 2009-05-31 13:51 boa

我们可以发现boa的大小有很大的差距,这为我们节省了很多空间。

7.宝儿的配置

这一步的工作也是在主机上完成的。

boa-0.94.13目录中已经有一个boa.conf样例,可以在此基础上进行修改。如下所示:

#vi boa.conf

(1)修改1)组

修改组编号组

组是0吗

(2)修改2)用户

不修改用户

用户是0吗

(3)修改3)别名

修改别名/CGI-bin//usr/lib/CGI-bin/

Is Alias /cgi-bin//www/cgi-bin/

(5)修改5)DoucmentRoot

修改DoucmentRoot /var/www

是DoucmentRoot /www

(6)设置6)服务器名

修改#服务器名www.your.org.here

是服务器名www.your.org.here。

否则,将出现错误“gethostbyname :3360无此类文件或目录”。

(7)访问日志修改

修改访问日志/var/log/boa/access _ log

# access log/var/log/boa/access _ log

否则,将出现一条错误消息:“无法复制错误日志:错误文件”

(8)以下配置与boa.conf的配置相关,都是在ARM根文件系统中创建的。

在开发板上执行以下步骤:

创建目录/etc/boa,并将boa和boa.conf复制到该目录。

mkdir /etc/boa

创建HTML文档的主目录/www

mkdir /www

在目录/www/cgi-bin中创建CGI脚本

mkdir /www/cgi-bin

以下步骤在ubuntu下执行:

将boa.conf复制到开发板的根文件系统中的/etc/boa。

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

将boa复制到开发板根文件系统中的/etc/boa。

# CP src/boa/source/rootfs/etc/boa

将ubuntu下的/etc/mime.types复制到开发板根文件系统下的/etc。

# CP/etc/mime . type/source/rootfs/etc

将你的主页index.html复制到www目录

8.测试

打开浏览器,输入开发板ip查看效果。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。