BOA服务器的搭建以及移植到开发板

Posted kn-zheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BOA服务器的搭建以及移植到开发板相关的知识,希望对你有一定的参考价值。

一、 概述

硬件资源:IAC-335X-Kit 开发板
宿主机:ubuntu16.04
交叉编译工具:arm-arago-linux-gnueabi
二、 BOA搭建

先确定交叉编译工具是否安装正确。
安装需要工具bison,flex
sudo apt-get install bison flex
解压boa-0.94.13.tar.gz
tar –zxvf boa-0.94.13.tar.gz
修改文件
(1)修改 src/compat.h
找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
(2)修改 src/log.c
注释

  1.  
    if (dup2(error_log, STDERR_FILENO) == -1)
  2.  
    DIE("unable to dup2 the error log");
  3.  

为:

  1.  
    /*if (dup2(error_log, STDERR_FILENO) == -1)
  2.  
    DIE("unable to dup2 the error log");
  3.  
    */

(3)修改src/boa.c
注释掉下面两句话:

  1.  
    if (passwdbuf == NULL)
  2.  
    DIE(”getpwuid”);
  3.  
  4.  
    if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1)
  5.  
    DIE(”initgroups”);
  6.  

  1.  
    #if 0
  2.  
    if (passwdbuf == NULL)
  3.  
    DIE(”getpwuid”);
  4.  
  5.  
    if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1)
  6.  
    DIE(”initgroups”);
  7.  
  8.  
    #endif

注释掉下面语句:

  1.  
    if (setuid(0) != -1)
  2.  
    DIE(”icky Linux kernel bug!”);
  3.  

  1.  
    #if 0
  2.  
    if (setuid(0) != -1)
  3.  
    DIE(”icky Linux kernel bug!”);
  4.  
  5.  
    #endif

(4)修改src/defines.h (修改boa传输文件的大小限制,默认1MB修改为16MB)
找到
#define SINGLE_POST_LIMIT_DEFAULT 1024 * 1024 /* 1 MB */
修改为
#define SINGLE_POST_LIMIT_DEFAULT 1024 * 1024 * 16 /* 16 MB */

生成Makefile文件
执行:
cd boa-0.94.13/src
./configure
修改Makefile
cd src
vim Makefile
修改CC = gcc 为 CC = arm-arago-linux-gnueabi-gcc
修改CPP = gcc -E 为 CC = arm-arago-linux-gnueabi-gcc -E
编译
make
然后为生成的二进制文件boa瘦身
arm-arago-linux-gnueabi-strip boa

三、 BOA移植

Boa的配置(宿主机下进行)
在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。如下:
vi boa.conf
(1)Group的修改
修改 Group nogroup 为 Group root
(2)user的修改
修改 User nobody 为 User root
(3)ScriptAlias的修改
修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/ /www/cgi-bin/
(4)DoucmentRoot的修改
修改 DoucmentRoot /var/www
为 DoucmentRoot /www
(5)ServerName的设置
修改 #ServerName www.your.org.here
为 ServerName www.your.org.here
(6)AccessLog修改(访问日志文件,不需要可以直接#注释)
修改 AccessLog /var/log/boa/access_log
为 AccessLog /www/log/boa/access_log
BOA移植(开发板上进行):
(1)创建目录/etc/boa并且把boa 和 boa.conf拷贝到这个目录下
mkdir /etc/boa
(2)创建HTML文档的主目录/www
mkdir /www
(3)创建CGI脚本所在录 /www/cgi-bin
mkdir /www/cgi-bin
(4)创建日志文件目录及空日志文件
mkdir /www/log
mkdir /www/log/boa
touch /www/log/boa/error_log
(5)将boa.conf拷贝到开发板根文件系统的/etc/boa下
(6)将boa拷贝到开发板根文件系统的/etc/boa下
(7)将宿主机下/etc/mime.types拷贝到开发板根文件系统的/etc下
测试
(1)在开发板运行BOA程序
/etc/boa/boa
出现如下图信息即可
(2)静态网页测试
随便找个*.html文件放入/www目录下,在浏览器中地址栏输入 开发板ip/*.html,访问成功即可。

以上是关于BOA服务器的搭建以及移植到开发板的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式linux下web服务器搭建

arm linux上的第一个应用程序 BOA移植

三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记

Boa服务器编译移植

SylixOS移植Boa服务器

iTOP-IMX6UL 实战项目:ssh 服务器移植到 arm 开发板