B/S之ubunut的boa移植

ubuntu上的Boa服务器移植

一、编译Boa程序

1.www.boa.org下载boa-0.94.13-src.tar.g
B/S之ubunut的boa移植_第1张图片
或者:从这里下载==》http://yunpan.cn/cVc5eYmysP4NA  访问密码 add9

2.tar zxvf boa-0.94.13-src.tar.gz  解压
3.cd  boa-0.94.13-src
4.cd ./src
5.vim defines.h找到相应的地方(下图所示),现下图修改。I(注意:SERVER_ROOT 后的路径是可以修改的,只要后面统一就行)

6../configure生成Makefile,这时当前路径下会出现一个Makefile

7.make
如果出现bison命令找不到需要下载bison命令:
B/S之ubunut的boa移植_第2张图片
再次make如果出现flex命令找不到,需要下载flex命令:
B/S之ubunut的boa移植_第3张图片
安装完后make
8.如果成功会在当前路径生成一个boa可执行文件,将其拷贝到/home/boa/ 命令:cp boa /home/boa

注意:如果你的/home目录下没有boa文件夹,需要先mkdir /home/boa


二、修改boa.conf配置文件

接着上面的步骤,cd ..返回到boa-0.94.13-src目录,会发现一个boa.conf文件,将其拷贝到/home/boa
1.cp boa.conf /home/boa
2.进入/home/boa目录:cd/home/boa
vim   /home/boa/boa.conf编辑boa.conf
3.修改User nobody 为 User 0 ; 修改Group nogroup 为 Group 0

4.修改ErrorLog选项和AccessLog选项为:
ErrorLog  /home/boa/log/error_log
AccessLog  /home/boa/log/access_log


5.设置html文件目录: DocumentRoot  /home/boa/www
6.设置默认首页:     DirectoryIndex index.html
7.设置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

四、启动boa服务器

修改/home下的boa文件夹权限,sudo chmod 777 /home/boa -R

运行/home/boa文件夹里的boa

cd /home/boa

./boa  


五、通过浏览器测试我们的boa服务器

在第4步中boa运行成功后打开浏览器输入ubuntu的ip敲回车,能看到www中的网页内容成功:

B/S之ubunut的boa移植_第4张图片


六、boa运行时常见的错误

1>错误1: gethostbyname:: No such file or directory
解决办法: 修改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>. 错误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



你可能感兴趣的:(B/S之ubunut的boa移植)