嵌入式服务器boa的搭建

本文详细介绍了如何在虚拟机(RHEL5.0.2)和ARM平台(博创UP-TECH-P270)上搭建嵌入式服务器Boa,包括下载源码、配置、编译、解决编译错误、修改配置文件、设置目录权限和运行 boa 的步骤。同时,针对可能出现的问题提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式服务器Boa的搭建方法

虚拟机:RHEL5.0.2

物理机:win7旗舰版

Arm平台:博创UP-TECH-P270

一.在虚拟机上搭建boa

1.      在www.boa.org上下载boa-0.94.13.tar.gz,这个版本已经很久未更新过,所以选这个就行了。

2.      解压。

3.      ./configure

4.      make

5.      编译过程中若出现错误:

util.c: 100: 1: pasting “t” and “->”does not give a valid preprocessing token make: [util.o] Error1

解决办法:

修改compat.h中的

#defineTIMEZONE_OFFSET(foo) foo##->tm_gmtoff

为:

#defineTIMEZONE_OFFSET(foo) foo->tm_gmtoff

6.      修改配置文件:(boa.conf)

1建立/etc/boa 目录, 并复制boa.conf/etc/boa 目录下,并按照以下步骤进行修改。

2修改访问权限:修改User nobody User 0,修改Groupnogroup Group 0

     注意:这里是否设置为0需要看你的Linux,具体如下:查看/etc/passwd是否有nobody和nogroup,有就不用改成0

3设定日志目录:boa 日志有两部分,Errorlog AccessLog,一般情况下为/var/log/boa/error_log

/var/log/boa/access_log两个文件。所以根据自己的情况情况设置日志目录:

ErrorLog/var/log/boa/error_log

AccessLog /var/log/boa/access_log

注意:这里/var/log/boa 目录必须为可写,否则会出现错误:log.c:73– Unable to dup2 the error log: Bad file r.

在启动脚本里将var 挂载成ramfs: mount –n –t ramfs ramfs /var

(4)设置html 文件目录: DocumentRoot/var/www

(5)设置默认首页: DirectoryIndex index.html

6设置cgi 脚本目录:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin

修改为

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

这些目录可以自己修改,但是要和网页存放的目录一致。

7. 将相关文件放入文件夹:

(1) 根据(第二.3 步)的设置建立/var/boa 文件夹。

(2)根据(第二.4 步)的设置建立/var/www 文件夹, 并在此目录下存放html 文件,包括index.html文件。

(3) 根据(第二.6 步)的设置建立/var/www/cgi-bin 文件夹, 并存放一些用来测试的cgi 脚本。

8.运行boa:

       设置你虚拟机的ip和你的物理机在同一个网段。然后在你的物理机的浏览器上输入虚拟机的ip即可。

 

二.在arm上搭建boa

1.      www.boa.org上下载boa-0.94.13.tar.gz,这个版本已经很久未更新过,所以选这个就行了。

2.      解压。

3.      ./configure

4.      上面三步跟在虚拟机上一样,如果已经下载好了就不用再下载了。

不一样的就是:

修改Makefile 文件,将

CC = gcc

CPP = gcc -E

改为:

CC = arm-linux-gcc

CPP = arm-linux-gcc–E

注意:你用什么交叉编译器就写什么。这里我用的是arm-linux-gcc3.4.6,比较老的一个版本。

5.     #make

6.      #arm-linux-stripboa //去掉调试信息,减少boa 体积

7.     拷贝PC /etc/mime.types 文件到开发板/etc 目录下,如果不用mimi.types,可将boa.conf文件中

MimeTypes /etc/mime.types

修改为:

MimeTypes /dev/null

8.      boa的配置(和上面一样,可能在usergroup那块有点区别,自己根据自己的linux设置)

注意:

(1)    如果出现你不认识的错误(log.c:73 unable to dup2 the errorlog:bad file descriptor):

1给日志目录增加其他用户可读可写权限

2修改src/log.c (建议采用方法1)注释掉

if (dup2(error_log, STDERR_FILENO) == -1) {

DIE("unable todup2 the error log");

}

即修改为:

#if 0

if (dup2(error_log,STDERR_FILENO) == -1) {

DIE("unable to dup2 the errorlog");

}

#endif

3#ErrorLog /var/log/boa/error_log

#AccessLog/var/log/boa/access_log

 

9.  将相关文件放入文件夹:

(1) 根据(第二.3 步)的设置建立/var/boa 文件夹。

(2)根据(第二.4 步)的设置建立/var/www 文件夹, 并在此目录下存放html 文件,包括index.html文件。

(3) 根据(第二.6 步)的设置建立/var/www/cgi-bin 文件夹, 并存放一些用来测试的cgi 脚本。

10.  运行boa

设置开发板ip跟物理机ip在同一个网段,然后在物理机浏览器上输入开发板ip即可。

 

常见错误:

(1)    boa.c:228 - icky Linux kernel bug!: No suchfile or directory

解决办法:修改src/boa.c 注释掉下面语句:

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

DIE(”icky Linuxkernel bug!”);

}

即修改为:

#if 0

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

DIE(”icky Linux kernel bug!”);

}

#endif

(2)    boa.c:211 - getpwuid: No such file ordirectory

解决办法:修改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

(3)    gethostbyname:: No such file or directory

解决办法:修改boa.conf 去掉ServerName www.your.org.here 前的注释符号(#)。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值