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
内核版本: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
相关文章推荐
- Ubuntu系统下的Hadoop集群(3)_Hadoop单机版自定义实现类以及编译运行
- ubuntu boa-0.94.13 Web服务器的编译与运行
- 下载、编译、运行android 7.1系统详解(ubuntu 16.0.4)
- 在Ubuntu使用gcc编译的程序无法运行的问题。
- 如何在ubuntu14.04(64位)编译运行32位程序
- QT4.7.1以及QT create编译Ubuntu x86 pc运行程序提示g++ commond no find错误
- ubuntu下编译uclinux skyeye上运行
- 运行时错误检查(/RTC)编译选项及实现原理
- ubuntu 下的java 环境的配置、简单的编译与运行
- 【实现】[抓取知网论文标题摘要] 终于能用Sublime直接编译运行python了,可是却无法导入bs4 | BeautifulSoup
- REMODE+ORBSLAM运行配置(2) REMODE和编译后的ORB ros工程利用节点实现通讯
- 运行时错误检查(/RTC)编译选项及实现原理(转)
- Ubuntu编译运行C
- Ubuntu编译运行bitcoin运行全节点之Error处理
- Ubuntu环境下Android Studio编译5.1系统的APP可以真机运行,但是4.4的体统真机运行会闪退
- 如何在ubuntu14.04(64位)编译运行32位程序
- 在Ubuntu 64位OS上运行hadoop2.2.0[重新编译hadoop]
- 在Ubuntu下安装nodejs4.x,并实现开机自动启动forever进程守护nodejs应用后台运行
- Ubuntu 编译ffmpeg 实现GPU 转码