环境
Ubuntu16.04
创建目录
mkdir /home/boa # 创建boa服务器的主目录
mkdir /home/boa/boa # 创建boa服务器的可执行程序目录
mkdir /home/boa/login # 创建boa服务器的日志文件目录
mkdir /home/boa/www # 创建boa服务器的网页文件目录
mkdir /home/boa/www/cgi-bin # 创建boa服务器的cgi可执行程序存储目录
boa源码包准备
1.下载boa源程序包:
去官网下载,也可以在共享目录中将boa-0.94.13-src.tar.gz下载到自己的PC机中。
2.将boa源程序包拷贝到Ubuntu虚拟机中的任意目录中,我拷贝到/home/boa
3.进入到存放boa源程序包的目录中,并解压boa源程序
boa服务器的配置编译
cd boa-0.94.13/src
#找到define.h
vim define.h
#修改路径为 #define SERVER_ROOT "/home/boa/boa"
2.找到boa.c(非必须后面会说明)
//注释以下代码
#if 0
if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}
#endif
3.编译
./configure # 执行配置脚本文件,自动生成Makefile
make # 自动编译boa源程序
可能遇见以下问题
问题1:
yacc -d boa_grammar.y
make: yacc: Command not found
Makefile:59: recipe for target 'y.tab.c' failed
make: *** [y.tab.c] Error 127
解决思路:安装yacc包
sudo apt-get install yacc
问题2:
会发现yacc包找不到;
解决思路:
在有些系统里面需要安装的yacc包名称为:byacc
sudo apt-get install byacc
问题3:
make: lex: Command not found
Makefile:62: recipe for target 'lex.yy.c' failed
解决思路:安装lex包
sudo apt-get install flex
问题4:
util.c:100:39: error: pasting "t" and "->" does not give a valid preprocessing token
time_offset = TIMEZONE_OFFSET(t);
^
compat.h:120:30: note: in definition of macro ‘TIMEZONE_OFFSET’
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
解决思路:由于版本问题,不支持##
需要修改compat.h文件中的内容
119 #ifdef HAVE_TM_GMTOFF
120// #define TIMEZONE_OFFSET(foo) foo->##tm_gmtoff 去掉##
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
121 #else
122 #define TIMEZONE_OFFSET(foo) timezone
123 #endif
124
125 #ifdef HAVE_TM_ZONE
126 //#define TIMEZONE(foo) foo->##tm_zone #去掉##
#define TIMEZONE(foo) foo->tm_zone
127 #else
128 #define TIMEZONE(foo) *tzname
129 #endif
手动加载boa服务器
1.拷贝boa和boa.conf
boa-0.94.13/src目录下执行
cp boa /home/boa/boa
cd ..
cp boa.conf /home/boa/boa
2.创建文件
cp /etc/mime.types /home/boa/boa
touch /home/boa/login/access_log
touch /home/boa/login/error_log
3.修改boa.conf文件
cd /home/boa/boa
vim boa.conf
#修改以下几处
User 0
Group 0
ErrorLog /home/boa/login/error_log
AccessLog /home/boa/login/access_log
DocumentRoot /home/boa/www
DirectoryIndex index.html
MimeTypes /home/boa/boa/mime.types
ScriptAlias /cgi-bin/ /home/boa/www/cgi-bin/
运行boa服务器
cd /home/boa/boa
sudo ./boa
ps -A | grep boa # 查看boa服务器进程,如有输出:则说明boa服务器运行成功
如果没有输出,则说明boa异常:
查看错误日志文件:
问题:[22/Sep/2022:03:31:58 +0000] boa.c:226 - icky Linux kernel bug!: Success
查看boa服务器的配置编译步骤2.找到boa.c
重新编译拷贝新的boa覆盖原来boa
网友评论