Chinaunix首页 | 论坛 | 博客
  • 博客访问: 232480
  • 博文数量: 29
  • 博客积分: 878
  • 博客等级: 上士
  • 技术积分: 1114
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-12 14:49
文章分类

全部博文(29)

文章存档

2012年(29)

分类: LINUX

2012-04-11 14:13:07

上午看了下boa服务器的配置与编译,还不算难。对我而言,重在理解概念就行。不过,还是基于PC。交叉编译以后尝试。
系统:ubuntu10.04 
boa版本:boa-0.94.13.tar.gz
内核:linux2.6.32

相关理论:
Boa
是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。
CGI
在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。即客户端与服务器的接口。
比如留言本的工作流程:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。

配置编译boa服务,构建一小型网页服务器
使用ps -e查看是否开启http服务,如果开启,则关闭。
1.下载boa-0.94.13.tar.gz源码
解压在/home/xxxx/boa-0.94.13目录中。
2.编译
在/home/xxxx/boa-0.94.13/src/目录中存放的是boa的源码,在源码目录下配置与编译。
执行./configure
这是根据configure.in文件进行一系列的配置,生成config.status,configure,和Makefile文件。
如果现实无法执行,要修改该目录下的configure的属性为可执行
chmod 755 configure
3.make
这个编译的是服务程序,在该目录下生成一个可执行文件boa
编译过程出现错误:
i.
lex boa_lexer.l
make: lex: Command not found
解决:apt-get install flex
编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。
yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。所以要安装flex。
ii:
gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token
make: *** [util.o] Error 1
解决:
修改 src/compat.h
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
如果有出现其他错误的,可以参看网页
总结的很详细。
4.修改配置文件
修改boa-0.94.13目录下boa.conf
下面是我的配置
User nobody
Group nogroup
ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
DocumentRoot /www   --web服务启动的目录在根目录下的/www
UserDir public_html
DirectoryIndex index.html  --目录的索引文件 默认首页
DirectoryMaker /usr/lib/boa/boa_indexer
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
......
将配置好的boa.conf复制到/etc/boa目录下。这是个默认目录。
把www文件复制到根目录下。
5.启动web服务
执行./boa
出错: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
即可启动web服务

在firefox浏览器中输入虚拟机的IP地址,即可进入women预先设定的主页。
交叉编译的可以参考下面的网页
阅读(7795) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

zhongli_i2012-04-12 10:23:40

虾米小: 在linux中移植嵌入式Boa服务器,有没有详细教程?谢谢了.....
网上的教程比较多。我下了一个教程叫做《嵌入式web服务器及远程控制应用详解》我还是浅尝辄止,你可以看一下。

虾米小2012-04-11 16:51:39

在linux中移植嵌入式Boa服务器,有没有详细教程?谢谢了