首页 > 代码库 > boa安装

boa安装

Boa 下载地址:http://www.boa.org/boa-0.94.13.tar.gz

1、解压生成Makefile

tar xzf boa-0.94.13.tar.gz #解压

cd boa-0.94.13/src #进入源码目录

./configure #生成Makefile

注:

1、如果为嵌入式开发板编译需修改Makefile

修改Makefile文件,找到CC=gcc,将其改成CC = arm-linux-gcc( arm-linux-gcc是3.3.2版的arm gcc编译器,

如果是3.4.5版本的gcc用:arm-softfloat-linux-gnu-gcc,当使用该版本,本文其余地方都如此更改),

再找到CPP = gcc –E,将其改成CPP = arm-linux-gcc –E,并保存退出。

2、编译时会出现错误

错误信息:

  debian:/home/a/sss/boa-0.94.13/src# make

  gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c

  util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token

  make: *** [util.o] Error 1

  解决方法:

  修改 src/compat.h

  找到

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

  修改成

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

修改log.c

   注释掉

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

   DIE("unable to dup2 the error log");

   }


3、简单配置

Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf

mkdir /etc/boa/

cp boa-0.94.13/boa.conf/etc/boa/

修改 ScriptAlias 项 为 :ScriptAlias /cgi-bin/ /var/www/cgi-bin/

并添加 /var/www/cgi-bin 文件

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

Port 80

# bind调用的IP地址,一般注释掉,表明绑定到INADDR_ANY,通配于服务器的所有IP地址

#Listen 192.68.0.5

#作为哪个用户运行,即它拥有该用户的权限,一般都是nobody(linux默认有),需要/etc/passwd中有nobody用户

User nobody

#作为哪个用户组运行,即它拥有该用户组的权限,一般都是nogroup(linux默认有),需要在/etc/group文件中有nogroup组

Group nogroup

#非常重要,HTML文档的主目录。如果没有以/开始,则表示从服务器的根路径开始。

DocumentRoot /var/www

#如果收到一个用户请求的话,在用户主目录后再增加的目录名

UserDir public_html

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

DirectoryIndex index.html

#非常重要,指明CGI脚本的虚拟路径对应的实际路径。一般所有的CGI脚本都要放在实际路径里

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

4、错误

1.错误1: gethostbyname:: No such file or directory
解决办法: 修改boa.conf 去掉 ServerName www.your.org.here 前的注释符号(#)
2

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

2.错误1: util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o]
解决办法: 修改 src/compat.h
   找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
   修改成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
3

解决办法: 修改 src/compat.h

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

   修改成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

3.错误2: boa.c:211 - getpwuid: No such file or directory
解决办法: 修改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
4

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

4.错误3: boa.c:228 - icky Linux kernel No such file or directory
解决办法: 修改src/boa.c
   注释掉下面语句:
   if (setuid(0) != -1) {
   DIE(”icky Linux kernel bug!”);
   }
   即修改为:
   #if 0
   if (setuid(0) != -1) {
   DIE(”icky Linux kernel bug!”);
   }
   #endif
5

解决办法: 修改src/boa.c

   注释掉下面语句:

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

   DIE(”icky Linux kernel bug!”);

   }

   即修改为:

   #if 0

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

   DIE(”icky Linux kernel bug!”);

   }

   #endif

5.错误4: log.c:73 unable to dup2 the error log:bad file descriptor
解决方法:
方法1> 确定日志目录对与所有用户都具有可读/写的权限
方法2> 修改src/log.c (建议采用方法1)
   注释掉
   if (dup2(error_log, STDERR_FILENO) == -1) {
   DIE("unable to dup2 the error log");
   }
   即修改为:
   #if 0
if (dup2(error_log, STDERR_FILENO) == -1) {
   DIE("unable to dup2 the error log");
   }
#endif

解决方法:

方法1> 确定日志目录对与所有用户都具有可读/写的权限

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

   注释掉

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

   DIE("unable to dup2 the error log");

   }

   即修改为:

   #if 0

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

   DIE("unable to dup2 the error log");

   }

#endif

5、启动

将boa boa_indexer 复制到/bin 目录下

执行 boa 启动boa

通过 ps aux | grep boa 查看boa是否启动。

注:

无法启动可能是端口问题,尝试修改端口

boa安装