嵌入式网页服务器boa移植有感

移植boa只要参考 下面这个文章

  http://blog.csdn.net/jody1989/article/details/6821363

主要有用的还是有很多的

我列下有用的步骤哈

1、下载Boa源码
    下载地址:  http://www.boa.org/ , 或者  http://sourceforge.net
    最新发行版本: 0.94.13
    下载 boa-0.94.13.tar.gz,注意:从boa上下载的是boa-0.94.13.tar.tar,解压方式一样
    解压:# tar xzf boa-0.94.13.tar.gz
2、生成Makefile文件
      cd boa-0.94.13 
      cd src
     ./configure文件
3、修改Makefile文件
    a、
修改 CC = gcc
为 CC = /usr/local/arm/2.95.3/bin/arm-linux-gcc 
    b、
修改 CPP = gcc - E
为 CPP = /usr/local/arm/2.95.3/bin/arm-linux-gcc -E 
4、执行

   make 

然后给boa瘦身

   arm-none-linux-gnueabi-strip boa

二、Boa服务器配置

1、 创建目录

mkdir /source/rootfs/etc/boa

2、 将boa源码目录下的boa.conf拷贝到/source/rootfs/etc/boa目录下

cp boa.conf /source/rootfs/etc/boa

3、 修改配置文件boa.conf

vim  /source/rootfs/etc/boa

(1)Group的修改

修改 Group nogroup

为 Group 0

(2)user的修改

修改 User nobody

为 User 0

(3)ScriptAlias的修改

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

为 ScriptAlias /cgi-bin/ /www/cgi-bin/

(5)DocumentRoot的修改

修改DocumentRoot /var/www

为DocumentRoot /www

(6)ServerName的设置

修改#ServerName www.your.org.here

为 ServerName www.your.org.here

否则会出现错误“gethostbyname::No such file or directory”

(7)AccessLog修改

修改AccessLog /var/log/boa/access_log

为#AccessLog /var/log/boa/access_log

(8)以下配置和boa.conf的配置有关,都是在ARM根文件系统中创建

以下步骤在开发板上进行:

创建HTML文档的主目录/www

mkdir /www

创建CGI脚本所在录 /www/cgi-bin

mkdir /www/cgi-bin

当不能使用cgi 

#AddType application/x-httpd-cgi cgi改为AddType application/x-httpd-cgi cgi

boa器测试

将boa拷贝到开发板根文件系统的/etc/boa下

#cp src/boa /source/rootfs/etc/boa

将ubuntu下/etc/mime.types拷贝到开发板根文件系统的/etc下

#cp /etc/mime.types /source/rootfs/etc

将你的主页index.html拷贝到www目录下

2):编译中的出错处理

错误1: 
  debian:/home/a/boa-0.94.13/src# make 
  yacc -d boa_grammar.y 
  make: yacc: Command not found 
  make: *** [y.tab.c] Error 127 
 解决方法: 
  debian:/home/a/boa-0.94.13/src# apt-get install bison 
错误2: 
  debian:/home/a/boa-0.94.13/src# make 
  lex boa_lexer.l 
  make: lex: Command not found 
  make: *** [lex.yy.c] Error 127 
 解决方法: 
  debian:/home/a/boa-0.94.13/src# apt-get install flex

错误3: 
  debian:/home/a/sss/boa-0.94.13/src# make 
  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 
  然后 
  debian:/home/a/sss/boa-0.94.13/src# make clean 
  debian:/home/a/sss/boa-0.94.13/src# make 
  出现: 
  debian:/home/a/sss/boa-0.94.13/src# make 
  make: Nothing to be done for `all'. 
  说明make没有检查到需要编译的东西,库或者应用程序已经编译好了。 
  make主要检查的是时间戳,只要target比依赖的文件时间靠后它就认为不需要编译.

     错误4:

 [01/Jan/1970:00:56:51 +0000] log.c:73 - unable to dup2 the error log: Bad file descriptor


  解决方法:

修改 src/log.c

注释掉

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

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

                   }

为:

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

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

                   }*/

再次执行boa命令

错误5:

#boa

[01/Jan/1970:01:01:15 +0000] boa.c:211 - getpwuid: No such file or directory

  解决方法:

修改src/boa.c

注释掉下面两句话:

if (passwdbuf == NULL) {

        DIE(getpwuid);

        }

        if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {

        DIE(initgroups);

        }

#if 0

        if (passwdbuf == NULL) {

        DIE(getpwuid);

        }

        if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {

        DIE(initgroups);

        }

        #endif

再次运行boa命令

错误6:

[01/Jan/1970:01:04:24 +0000] boa.c:226 - icky Linux kernel bug!: No such file or directory

  解决:

修改src/boa.c

 if (setuid(0) != -1) {

                        DIE(icky Linux kernel bug!);

        }

#if 0

         if (setuid(0) != -1) {

                        DIE(icky Linux kernel bug!);

                }

#endif

成功配置以后,还需要创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,将静态网页存入该目录下(可以将主机 /usr/share/doc/HTML/zh-CN目录下的index.html文件和image目录复制到/var/www目录下),创建CGI脚本所在录/var /www/cgi-bin,将cgi的脚本存放在该目录下。另外还要将mime.types文件复制/etc目录下,通常可以从linux主机的/etc 目录下直接复制即可。


你不知道网上有多少坑等你 你也不知道坑有多深 你所能做的就是自己多思考 多想多看 

共勉





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值