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

时间:2023-01-25 18:40:40

一、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

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

2.修改Makefile   

$cd boa-0.94.13

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

$cd src

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

$./configure   (生成Makefile)

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

修改Makefile(修改交叉工具链)

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

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

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

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

3.Makefile用到的文件配置

(1). 下载Lex和YACC

注:Lex(生成一个词法分析器(scanner)的C源码任务就是将输入的各种符号,转化成相应的标识符(token),转化后的标识符 很容易被后续阶段处理。   

 YACCyacc生成的编译器主要是用C语言写成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把两部份产生出来的C程序一并编译。

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


(2). 修改 src/compat.h 
  找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 
修改成 
 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 

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

(3). 修改 src/log.c

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

注释掉

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");

                   }*

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


(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

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

注释掉

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

                        DIE(”icky Linux kernel bug!”);

        }

#if 0

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

                        DIE(”icky Linux kernel bug!”);

                }

#endif

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

4.make与瘦身

make之前安装交叉编译连arm-none-linux-gnueabi

$make

给boa瘦身

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

三、配置BOA服务器

1、 创建目录

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

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

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

3、修改配置文件boa.conf

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

(1)Group的修改

修改 Group nogroup

为 Group 0

(2)user的修改

修改 User nobody

为 User 0

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

(3)ScriptAlias的修改

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

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

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

(5)DocumentRoot的修改

修改DocumentRoot /var/www

为DocumentRoot /www

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

(6)ServerName的设置

修改#ServerName www.your.org.here

为 ServerName www.your.org.here

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

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

(7)AccessLog修改

修改AccessLog /var/log/boa/access_log

为#AccessLog /var/log/boa/access_log

嵌入式Linux中的boa服务器的移植
4.创建boa服务器所需的目录(注:与boa.conf配置文件里的目录对应)

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

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

(注:当不能使用cgi 时,将#AddType application/x-httpd-cgi cgi改为AddType application/x-httpd-cgi cgi)

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

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

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

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

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

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

四、测试

1.启动开发板

2.进入etc/boa/文件夹

#cd etc/boa/

3.启动boa服务器

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

4.打开ie浏览器,输入开发板的ip地址,回车

可以打开你的测试网页,证明boa服务器移植成功。

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