当前位置: 首页 > 工具软件 > Boa > 使用案例 >

boa搭建

许黎明
2023-12-01

http://blog.csdn.net/keyearth/article/details/5819617

 学习嵌入式Linux的过程中,一直想自己建立一个网络服务器,运行在S3C2410的板子上,作为一个简人机交互界面,也是工业现场中比较常用的嵌入式应用之一。

        选来选去,还是Boa比较好,因为这个Linux下的webserver非常简单,设计者考虑的首要因素是速度和安全,选择了单任务单用户的模式,对简单的要求安全性的工业应用来说应该是比较合适的。

        而且据Boa.org网站的数据, 速度比Apache还快一点点。所以下载下来安装包,到网上搜了一些配置方法,结合自己的实践,终于成功的在自己的虚拟机Ubuntu10.0系统上配置成功,在Firefox浏览器中能够访问服务器。

        最快速的配置步骤如下所示,如果要改配置可以参考附录中的说明更改。自己做个总结,也希望对他人有些参考价值。

 

1 . 在www.boa.org 上下载boa ,当前的版本为0.94.13 ,放在某目录

2 . 解压boa :         $ tar  -zxvf  boa-0.94.13.tar.gz

3 . 进入源码目录:   $ cd  boa-0.94.13/src

4 . 执行配置脚本:   $ ./configure 

        检查所需要的工具是否存在,yes 表示存在,no 表示不存在。不存在的不一定都要安装。执行make 时出错会提示缺少什么命令……

    在Ubuntu 系统中,可能会提示找不到yacc 和lex 命令,如果执行下面这句:

sudo apt-get install yacc lex

会发现失灵了!   其实正确的方法是

sudo apt-get install flex bison

因为在Ubuntu 系统中用flex 和 bison 代替了lex 和 yacc 。

5 . 修改compat.h 的第120 行,否则会编译出错

           修改:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

           改为:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff

      修改log.c 的第73 行,否则可能会dup2 出错。

           注释掉这段:

/* if (dup2(error_log, STDERR_FILENO) == -1) {

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

        } */

6 . 其他默认

7 . 编译:                      $ make

           生成boa 和 boa_indexer

8 . 瘦身(针对嵌入式系统):    $ strip boa           $ strip boa_indexer

9 . 拷贝boa 、boa_indexer 、defines.h 到 /etc/boa 目录下。

           $ sudo mkdir /etc/boa

           $ sudo cp boa boa_indexer defines.h /etc/boa

        此目录为boa 服务器的运行起始目录,在defines.h 中由SERVER_BOOT 定义。

10 . 回到上级目录,修改boa.conf 配置文件。

           $ cd ../

           $ vim boa.conf

修改:ScriptAlias   /cgi-bin/   /usr/lib/cgi-bin/  

改为:ScriptAlias   /cgi-bin/   /var/www/cgi-bin/

           修改:DirectoryMaker   /usr/lib/boa_indexer 

           改为:DirectoryMaker   /etc/boa/boa_indexer

保存,拷贝boa.conf 到/etc/boa/ 目录下。

11 . 建立需要的文件夹

           $ mkdir /var/www  /var/www/cgi-bin   /var/log/boa

12.    运行boa 服务器

            $ /etc/boa/boa

13.    验证服务器是否成功运行

      (1 ) 打开浏览器,任意保存一个网页为html 格式,如baidu.html

      (2 ) 拷贝baidu.html 文件到/var/www 目录下。

      (3 ) 在浏览器地址栏输入 http://localhost/baidu.html 就可以看到了!

 

 

 

 

附录: Boa Webserver 配置参数说明:


Port : boa 服务器监听的端口,默认的端口是 80 。如果端口小于 1024 ,则必须是 root 用户启动服务器。

Listen :绑定的 ip 地址。不使用这个参数时,将绑定所有的地址。

User :连接到服务器的客户端的身份,可以是用户名或 UID 。

Group :连接到服务器的客户端的组,可以是组名或 GID 。

ServerAdmin :服务器出故障时要通知的邮箱地址。

ErrorLog :指定错误日志文件。如果路径没有以“ / ”开始,则相对于 ServerRoot 路径。没有配置时默认的文件是 /dev/stderr 。若不想记录日志,指定文件为 /dev/null 。

AccessLog :设置存取日志文件,与 ErrorLog 类似。

UseLocaltime :设置使用本地时间,使用 UTC 时注释这个参数。这个参数没有值。

VerboseCGILogs :在错误日志文件中记录 CGI 启动和停止时间,若不记录,注释这个参数。这个参数没有值。

ServerName :指定服务器的名称,当客户端使用 gethostname + gethostbyname 时返回给客户端。

VirtualHost :虚拟主机开关。使用此参数,则会在 DocumentRoot 设定的目录添加一个 ip 地址作为新的 DocumentRoot 来处理客户端的请求。如 DocumentRoot 设置为 /var/www ,则 http://localhost/ 则转换成 /var/www/127.0.0.1/ ,若注释此参数,则为 /var/www/ 。

 

DocumentRoot : HTML 文件的根目录(也就是网站的目录)。

UserDir :指定用户目录。

DirectoryIndex :指定预生成目录信息的文件,注释此变量将使用 DirectoryMaker 变量。这个变量也就是设置默认主页的文件名。

DirectoryMaker :指定用于生成目录的程序,注释此变量将不允许列目录。

DirectoryCache :当 DirectoryIndex 文件不存在,而 DirecotryMaker 又被注释掉时,将列出这个参数指定目录给客户端。

KeepAliveMax :每个连接允许的请求数量。如果将此值设为 " 0 " ,将不限制请求的数目。

KeepAliveTimeOut :在关闭持久连接前等待下一个请求的秒数。(秒)。

MimeTypes :设置包含 mimetypes 信息的文件,一般是 /etc/mime.types 。

DefaultType :默认的 mimetype 类型,一般是 text/html 。

CGIPath :相当于给 CGI 程序使用的 $PATH 变量。

SinglePostLimit :一次 POST 允许最大的字节数,默认是 1MB.

AddType : 增加 MimeType 没有指定的类型,例 : AddType type extension [extension ...] 。要使用 cgi ,必须添加 cgi 类型: AddType application/x-httpd-cgi cgi

Redirect :重定向文件

Aliases :指定路径的别名。

ScriptAlias :指定脚本路径的虚拟路径。

 


 类似资料: