1.www.boa.org下载boa-0.94.13-src.tar.g或者:从这里下载==》http://yunpan.cn/cVc5eYmysP4NA 访问密码 add9
2.tar zxvf boa-0.94.13-src.tar.gz 解压3.cd boa-0.94.13-src4.cd ./src5.vim defines.h找到相应的地方(下图所示),现下图修改。I(注意:SERVER_ROOT 后的路径是可以修改的,只要后面统一就行)
6../configure生成Makefile,这时当前路径下会出现一个Makefile7.make如果出现bison命令找不到需要下载bison命令:再次make如果出现flex命令找不到,需要下载flex命令:安装完后make8.如果成功会在当前路径生成一个boa可执行文件,将其拷贝到/home/boa/ 命令:cp boa /home/boa注意:如果你的/home目录下没有boa文件夹,需要先mkdir /home/boa
接着上面的步骤,cd ..返回到boa-0.94.13-src目录,会发现一个boa.conf文件,将其拷贝到/home/boa1.cp boa.conf /home/boa2.进入/home/boa目录:cd/home/boavim /home/boa/boa.conf编辑boa.conf3.修改User nobody 为 User 0 ; 修改Group nogroup 为 Group 04.修改ErrorLog选项和AccessLog选项为:
ErrorLog /home/boa/log/error_log
AccessLog /home/boa/log/access_log5.设置html文件目录: DocumentRoot /home/boa/www6.设置默认首页: DirectoryIndex index.html7.设置ScriptAlias选项为:
ScriptAlias /cgi-bin/ /home/boa/www/cgi-bin/
进入/home/boa目录下:
cd /home/boa
1.创建log文件夹,并在log文件夹下创建error_log和access_log文件
mkdir log
touch log/error_log
touch log/access_log
2.在/home/boa目录下创建www文件夹
mkdir www
将一个测试网页(随便一个网页重名为index.html)放在www文件里
在www文件夹下创建一个名为cgi-bin的文件夹(将来用来存放CGI程序)
mkdir www/cgi-bin
修改/home下的boa文件夹权限,sudo chmod 777 /home/boa -R
运行/home/boa文件夹里的boa
cd /home/boa
./boa
在第4步中boa运行成功后打开浏览器输入ubuntu的ip敲回车,能看到www中的网页内容成功:
2>. 错误1: util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o]解决办法: 修改boa.conf 去掉 ServerName www.your.org.here 前的注释符号(#)
解决办法: 修改 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 bug!: 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