ubuntu11.10下实现boa的编译,在ubuntu上运行
来源:互联网 发布:java的关键字有哪些 编辑:程序博客网 时间:2024/05/06 22:57
系统: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的设计目标是速度和安全。
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
if(dup2(error_log, STDERR_FILENO) == -1)
{
DIE("unable to dup2 the error log");
}
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 此时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
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
- ubuntu11.10下实现boa的编译,在ubuntu上运行
- 在ubuntu上运行boa的方法
- 在debian上运行boa
- ubuntu boa-0.94.13 Web服务器的编译与运行
- ubuntu下在模拟器上运行编译后的android源码
- 交叉编译boa后在开发板运行boa出现-/bin/sh: boa: not found 错误的解决方法
- boa constructor 在window 和ubuntu平台上的安装
- 在linux(ubuntu11.10)下goagent实现开机自动加载运行
- android源代码在ubuntu11.04上编译出现的问题
- ubuntu11.10(TQ210)下移植boa服务器
- OpenCV2.3.1在Ubuntu11.10上编译错误解决方法
- ubuntu下编译uclinux skyeye上运行
- Ubuntu11.10上编译android
- 在ubuntu的Terminal下编译运行bls签名方案
- Picoc在Ubuntu下的编译与运行测试
- ffmpeg在ubuntu11.10下编译avcodec_sample.c例子
- ubuntu环境下VLFeat在MATLAB上的运行
- Ubuntu11.10下编译 OpenJDK7
- CCS4环境下测试代码运行时间
- jQuery Mobile动态刷新页面样式
- Ibatis学习总结
- process and thread android中的进程与线程概念
- 周赛
- ubuntu11.10下实现boa的编译,在ubuntu上运行
- JavaForge 的免费 SVN 服务器
- how to get preloader and dsp_bl from mtk phone?
- Job Completion/Return Process in Oracle MES
- eclipse导入工程
- 周赛
- 使用swfupload上传文件出现中文乱码现象的解决方法
- [Linux] 进程的虚拟地址空间
- CentOS 6.3 系统 LAMP(Apache+MySQL+PHP) 安装步骤