ubuntu10.10嵌入式boa web服务器移植

来源:互联网 发布:js三级联动菜单 编辑:程序博客网 时间:2024/05/10 13:55
主机:ubuntu10.10


  交叉工具链:arm-none-linux-gnueabi-gcc


  目标:s3c2410开发板


  结合网上一些文档,整理了一个比较完整的文档。


  1.下载Boa源码


  下载地址: http://www.boa.org/


  最新发行版本: 0.94.13


  下载 boa-0.94.13.tar.gz


  解压:# tar xzf boa-0.94.13.tar.gz


  2.安装需要工具bison,flex


  sudo apt-get install bison flex


  否则会出现如下错误


  make: yacc:命令未找到


  make: *** [y.tab.c] 错误 127


  make: lex:命令未找到


  make: *** [lex.yy.c] 错误 127


       注:上面的一版都已经存在了


  3.修改文件,在boa-0.94.13目录下


  (1)修改 src/compat.h


  找到


  #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff


  修改成


  #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff


  否则会出现错误:


  util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 错误 1


      注:适用于2.6.29以上内核


  (2)修改 src/log.c


  注释掉


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


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


  }


  否则会出现错误:


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


  (3)修改src/boa.c


  注释掉下面两句话:


  if (passwdbuf == NULL) {


  DIE(”getpwuid”);


  }


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


  DIE(”initgroups”);


  }




  否则会出现错误:boa.c:211 - getpwuid: No such file or directory


  注释掉下面语句:


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


  DIE(”icky Linux kernel bug!”);


  }
  否则会出现问题:boa.c:228 - icky Linux kernel bug!: No such file or directory


  4、生成Makefile文件


  执行:


  #cd boa-0.94.13


  #./configure


  5、修改Makefile


  cd src


  vim Makefile


  修改CC = gcc 为 CC = arm-none-linux-gnueabi-gcc


  修改CPP = gcc -E 为 CC = arm-none-linux-gnueabi-gcc-E


  6、编译


  make


  ls -l boa


  -rwxr-xr-x 1 david david 189223 2009-05-31 13:44 boa


  然后为生成的二进制文件boa瘦身


  arm-none-linux-gnueabi-strip boa


  ls -l boa


  -rwxr-xr-x 1 david david 61052 2009-05-31 13:51 boa


  可以发现boa的大小前后差距很大这为我们节省了很大的空间


  7、Boa的配置


  这一步的工作也在电脑主机上完成。


  在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。如下(只标注需要修改的地方):


  #作为哪个用户运行,即它拥有该用户的权限,一般都是nobody,需要/etc/passwd中有
      01.#nobody用户
      User nobody


    修改为:User 0
      02.#件中有nogroup组
      Group nogroup


   修改为:Group 0
     03.#错误日志文件。如果没有以/开始,则表示从服务器的根路径开始。如果不需要错误日志,则用#/dev/null。在下面设置时


,注意一定要立/var/log/boa目录
      ErrorLog /var/log/boa/error_log


   04.将AccessLog 注释掉
      #AccessLog /var/log/boa/access_log
      05.将#ServerName  解除注释  


     ServerName www.your.org.here


      06.请将DocumentRoot 修改成你在boa源码下的src力defines.c里的Sever_Root,否则在运行时会报找不到boa.conf的错误
      DocumentRoot /var/www
       注:其中有很多事默认的不需要修改,有些不需要修改的没有在这列举出来




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


    1,将Ubuntu里/etc/mime.types 拷贝到开发板上的/etc下


 2,在根文件系统下创建目录/var/boa


    3,将编译好的boa放到/var/boa 目录下


    4,在根文件下创建目录/var/www    /var/www/cgi-bin


 5,将boa.conf 放到/var/www下,再在www下创建index.html,在该html里编写一个简单的html程序


       <html><body>Hello world!</body></html>


  6、测试


    进入boa目录下,运行boa程序
    ./boa
    如果出现以下信息,表示成功了


   [01/Jan/1970:00:15:31 +0000] boa: server version Boa/0.94.13
   [01/Jan/1970:00:15:31 +0000] [root@farsight boa]# boa: server built Oct 18 2011 at 20:15:43.
   [01/Jan/1970:00:15:31 +0000] boa: starting server pid=1037, port 80
   [01/Jan/1970:00:15:31 +0000] boa: server version Boa/0.94.1
  


   打开一个浏览器输入开发板ip看看效果OK


    地址格式如下:http://192.168.7.1


    以上属于简单的boa环境搭建,没有在html涉及到cgi编程。  





原创粉丝点击