您的位置:首页 > 其它

ubuntu11.10下实现boa的编译,在ubuntu上运行

2013-01-31 19:11 253 查看
系统:ubuntu11.10

内核版本:linux-3.0.57

编译器:4.6.1

boa:boa-0.94.13

今天,看了boa服务器的一些操作,想在ubuntu下实现一个小的服务器,这里先介绍一下boa服务器, boa服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。因为他的源码开放,谁都可以从他的官网下载(http://www.boa.org/),进行开发和学习。

boa Web服务器非常小巧,其源码包只有大约119KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。

我现在是实现在ubuntu上的boa服务(至于如何移植到开发板,我会在以后做)

按照下述步骤来:

1.下载源码包,官网在上面已经列出

输入命令: tar zxvf boa-0.94.13

2.进入 boa-0.94.13目录下的src/目录,

我们知道一个源程序要变成一个可执行文件,要经过 词法分析--> 语法分析 --> 语义分析 --> 中间代码生成 --> 对中间代码优化-->生成目标文件,编译一个linux下的c系统,也是这样的,包含词法和语法分析模块,不过Linux上用的是bison和flex。yacc是一个文法分析器的生成器,bison即是yacc的GNU版本。Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。

所以我们要先安装它们,输入命令:sudo apt-get install bison flex

你会看到一个.configure 文件

输入命令: sudo ./configure (如果不能执行,先修改它的权限,输入:chmod 777 .configuer)它会生成Makefile文件

3.然后输入:sudo make

好了,这里出现错误:

util.c: 在函数‘get_commonlog_time’中:

util.c:100:1: 错误: 毗连“t”和“->”不能给出一个有效的预处理标识符

make: *** [util.o] 错误 1

现在我们修改src目录下的 compat.h

找到:

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

修改成为:

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

再执行 :make,会在src目录下生成一个boa文件,

4.按需求修改主目录下的boa.conf文件,我没有改动,这是默认配置:

User nobody

Group nogroup

ErrorLog /var/log/boa/error_log

AccessLog /var/log/boa/access_log

DocumentRoot /var/www --------这个是web服务器启动/var/www 你的网页目录就是www

UserDir public_html

DirectoryIndex index.html --------服务器启动的时候要有一个主目录的索引文件,也就是默认首页,就是index.html

修改完成后,把它拷到/etc/boa目录下,如果没有这个目录,自己手动创建 : sudo mkdir /etc/boa

5.在src目录下

输入:./boa 出现:

[31/Jan/2013:10:42:55 +0000] log.c:73 - unable to dup2 the error log: Bad file descriptor 这样的错误。

我们要改动log.c文件

注释掉:

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

{

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

}

然后:

make clean

make

6.然后再在src目录下 执行: ./boa 若出现:Cannot open /var/log/boa/access_log for logging: logfile open: No such file or directory,或者是其他的Cannot open /var/log/boa/error_log for logging: logfile open: No such file or directory

哪个出现,你就在boa.conf里把它给注释掉(不要忘了/etc/boa/目录下的boa.conf),即 改成:

#AccessLog /var/log/boa/access_log

然后再./boa 此时boa服务器就已经启动,打开ubuntu浏览器,输入ubuntu的ip地址,就可以看到你放在/var/www里的网页了。ok
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: