在JZ2440板上关于一直Boa服务器的一点心得总结

来源:互联网 发布:山东省网络信息办公室 编辑:程序博客网 时间:2024/04/29 09:33

             作为一个初入嵌入式学习不久的菜鸟,在这里写博客还是挺害羞的。应一起学习的伙伴的要求,同时也想通过某种方式来记录自己学习过程的点滴,给自己一个督促,给自己一个未来。

             下面介绍一下在S3C2440硬件平台上如何Boa服务器移植完成相应工作,只求勿喷,多多指教。

一、下载Boa源码

Boa源码下载地址:http://www.boa.org/或 http://labs.nevion.com/open-source/ 目前最新发行版本:0.94.13(05年更新版本),在linux上下载boa-0.94.13.tar.gz压缩包, 并将其解压并进入解压源码目录的src子目录。

1.#tar zxvf boa-0.94.13.tar.gz

2.#mv boa-0.94.13 boa_arm

                 3. #cd boa_arm/src

二、配置编译Boa文件

     下面所有操作都在src子目录下操作

        1、#vim defines.h  修改#define SERVER_ROOT "/etc/boa"统一为“/usr/boa”。     SERVER_ROOT为boa启动时的配置文件boa.conf存放路径,这里我们统一为/usr/boa.(其实这个路径可以不修改,但是记住一定要将boa.conf文件放在S3C2440硬件平台上对应的路径下)
       2、生成Makefile文件
         #./configure
         #vim Makefile 进入vim进行修改交叉编译器
         将:CC= gcc  CPP=gcc -E     改为:CC=arm-linux-gcc  CPP=arm-linux-gcc -E
       3、修改boa_arm/src/compat.h
                  找到#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
      为:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff 否则在编译的时候会出现如下所示错误:
        util.c: 100: 1: pasting"t"and"->"does not give a valid preprocessing token make: [util.o] Error1
       4、 修改src/log.c (其实完全可以不改,只要确保日志目录对与所有用户都具有可读/写的权限

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

   DIE("unableto dup2 the error log"); }

   即修改为:

   #if 0

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

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

    #endif

否则在编译的时候会出现如下所示错误:

 log.c:73 unable to dup2 the error log:bad file descriptor

5、修改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.c:211 - getpwuid: No such file or directory

   注释掉下面语句:

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

   DIE(”icky Linux kernel bug!”);}

   即修改为:

   #if 0

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

    DIE(”icky Linux kernel bug!”);}

   #endif

否则在编译的时候会出现如下所示错误:

         boa.c:228 - icky Linux kernel bug!: No such file or directory
      6、然后运行make进行编译,就可得到执行程序boa
         #make
         生成的boa执行文件大小为175.8KB。通过执行下面命令就可以将文件中调试信息除去,得到一个约60K的boa文件。     #arm-linux-strip boa
        之后就可以将boa文件拷到S3C2440硬件平台上,至于放在哪个目录下,大家根据自己习惯来在SecureCRT中通过串口就行操作。我是把boa文件放到了bin目录下。
    三、修改配置文件boa.conf(这个修改配置可以在linux下修改也可以在SecureCRT中通过串口就行操作
       以下我是在SecureCRT中操作的(前提是你已经把boa.conf从linux下拷到了开发板上
       1.在开发板/etc目录下建立/etc/boa目录, 并复制boa.conf到/etc/boa目录下,并按照以下步骤进行修改。

   #mkdir /etc/boa

   #cp boa.conf /etc/boa

#vim boa.conf 进入boa.conf中进行配置

2.访问端口号设置

Port 80,可以设定我们访问网页时的端口号默认为80—访问时无需指定,假如改变了此端口号为8080,必须以下列格式访问: http://192.168.1.3:8080。一般在同一个电脑上运行多个boa服务器时可采用此方法我们这里保持默认即可。(这些都是通过些大牛博客上学来的,大家不妨可以试试)

3. 修改访问权限:

    修改User nobody 为 user 0

   修改Group nogroup 为 group 0

4. 设定日志目录:boa日志有两部分,Errorlog 和 AccessLog

    默认为/var/log/boa/error_log和/var/log/boa/access_log两个文件。因为要移植到开发板上所以我统一修改

   ErrorLog /etc/boa/error_log

   AccessLog /etc/boa/access_log

  5. 设置html文件目录: 

默认为:DocumentRoot /var/www 我们统一修改为:

DocumentRoot /etc/boa/www

  6. 设置默认首页: DirectoryIndex index.html

这是访问网页时若不指定访问的网页名称,服务器默认返回的网页,我们不做修改

  7. 设置cgi脚本目录:  将

          ScriptAlias /cgi-bin/ /usr/lib/cgi-bin

    修改为

          ScriptAlias /cgi-bin/ /etc/boa/cgi-bin  

8.ServerName www.your.org.here 可以不修改,一般注释掉

  9. 把mime.types文件复制到开发板/etc/boa目录。

其实以上修改没有定式,大家操作时可以根据自己习惯修改相应的目录即可。最后就比较简单了,在开发板/etc/boa目录下创建日志文件所在目录/etc/boa/log,创建HTML文档的主目录/etc/boa/www,创建CGI脚本所在目录/etc/boa/cgi-bin.剩下的就可在/etc/boa/www

 下放一个自己写好的.html文件就好了。然后执行boa文件:# /bin/boa。现在就可以连接硬件网络,在电脑浏览器里访问已建立好的服务器里的.html页面了。须记得IP就是开发板的IP,大家自己#ifconfig 下就可以了。

初次,勿见怪。希望能互相学习。

       

0 0