Ubuntu 配置 boa 服务器 一例:
一 下载Boa源码
下载地址:
最新发行版本: 0.94.13
下载 boa-0.94.13.tar.gz
解压:# tar xzf boa-0.94.13.tar.gz
二 安装需要工具bison,flex
sudo apt-get install bison flex
三 生成Makefile文件
执行:
cd boa-0.94.13/src
./configure
四 然后make,但是为了保证make不出现错误的话必须现修改一些文件(即配置)
Boa的配置
1 Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。
修改boa.conf文件:servername去掉注释,nogrounp改为0,/var/www改为/www(可选,设置的什么系统中对应即可)
2 修改compat.h中的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
为:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
3 修改log.c
注释掉
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
修改完成后,make,然后切换为root用户,./boa运行
五 在浏览器中输入本机的ip的地址及访问页面即可,如果有index.html页面,输入ip地址就显示出来了
六 常见错误:
1 错误1: gethostbyname:: No such file or directory
解决办法: 修改boa.conf 去掉 ServerName 前的注释符号(#)
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 错误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 错误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 错误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