嵌入式Linux中的boa服务器的移植

2019-07-13 00:15发布

一、BOA服务器移植环境

1、 主机:Ubuntu10.10发行版 2、 目标机:FS_S5PC100平台 3、 交叉编译工具:arm-none-linux-gnueabi-4.5.1 4、内核:linux-2.6.35

二、环境的配置与修改

1.解压源码 $tar xvf boa-0.94.13.tar.tar
2.修改Makefile    $cd boa-0.94.13
$cd src
$./configure   (生成Makefile)
修改Makefile(修改交叉工具链)
 修改CC = gcc 为 CC = arm-none-linux-gnueabi-gcc  修改CPP = gcc -E 为 CPP = arm-none-linux-gnueabi-gcc –E
3.Makefile用到的文件配置 (1). 下载Lex和YACC 注:Lex(生成一个词法分析器(scanner)的C源码任务就是将输入的各种符号,转化成相应的标识符(token),转化后的标识符 很容易被后续阶段处理。     YACCyacc生成的编译器主要是用C语言写成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把两部份产生出来的C程序一并编译。

(2). 修改 src/compat.h 
  找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 
修改成 
 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 
(3). 修改 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");                    }*

(4). 修改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
注释掉 if (setuid(0) != -1) {                         DIE(”icky Linux kernel bug!”);         } #if 0          if (setuid(0) != -1) {                         DIE(”icky Linux kernel bug!”);                 } #endif
4.make与瘦身 make之前安装交叉编译连arm-none-linux-gnueabi $make 给boa瘦身

三、配置BOA服务器

1、 创建目录
2、 将boa源码目录下的boa.conf拷贝到/source/rootfs/etc/boa目录下
3、修改配置文件boa.conf
(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
4.创建boa服务器所需的目录(注:与boa.conf配置文件里的目录对应)


(注:当不能使用cgi 时,将#AddType application/x-httpd-cgi cgi改为AddType application/x-httpd-cgi cgi) 将boa拷贝到开发板根文件系统的/etc/boa下
将ubuntu下/etc/mime.types拷贝到开发板根文件系统的/etc下
将你的主页index.html拷贝到www目录下

四、测试

1.启动开发板 2.进入etc/boa/文件夹 #cd etc/boa/ 3.启动boa服务器
4.打开ie浏览器,输入开发板的ip地址,回车 可以打开你的测试网页,证明boa服务器移植成功。