基于FS2410 的Boa 移植

 一、Boa 程序的移植
(1)从 www.boa.org 上下载Boa 源码,当前的版本是 0.94.13,将其解压并进入源码目录的
src 子目录。
# tar xzf boa-0.94.13.tar.gz
# cd boa-0.94.13/src
生成 Makefile 文件
./configure
(2)修改 Makefile 文件(注:这里修改根据自己的交叉编译器自行修改),修改 CC = gcc
为 CC = arm-linux-gnu-gcc
修改 CPP = gcc - E
CPP = arm-linux-gnu-gcc – E
(3)修改 头文件 defines.h
找到#define SERVER_ROOT “ /etc/boa”修改成
#define SERVER_ROOT “ /var/www”
这里定义的是 web 服务器的文件根目录(用户可以自行定义,只要跟 boa.conf 中设置一致
就可以了)
(4)修改 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
(5)修改 /src/boa.c,注释掉下面两行:?/* if (setuid(0) != -1) {
                                DIE("icky Linux kernel bug!");
                             } */
                                 /*if (passwdbuf == NULL) {
                                       DIE("getpwuid");??
                                }*/
(6) gethostbyname:: Resource temporarily unavailable 这个问题我也遇到过,我只是把src文件夹下的config.c里的
if(!server_name){..........}(大概在266行到286行之间)注释掉,就能运行在板子上运行boa,
到现在为止没有遇到过是么问题。但不知道以后会不会有问题。
(7)然后运行 make 进行编译,得到的可执行程序 boa,将调试信息剥去,得到的最后程序只有
62872Byte 大小。
# make
# arm-linux-gnu-strip boa

二、Boa配置,使其能够支持CGI程序的执行。
        在 boa源码目录下有一个 boa.conf
可以对其作如下修改:
48 User nobody   修改为:User 0
49 Group nogroup 修改为:Group 0
62 ErrorLog /var/log/boa/error_log  注释掉,前面加# 即#ErrorLog /var/log/boa/error_log
74 AccessLog /var/log/boa/access_log 注释掉,前面加# 同上
94 #ServerName www.your.org.here   去掉#
130 DirectoryMaker /usr/lib/boa/boa_indexer 注释掉,前面加#
155 MimeTypes /etc/mime.types 修改为:MimeTypes /var/www/mime.types
160 DefaultType text/plain 修改为:DefaultType text/html
188 Alias /doc /usr/doc    注释掉,前面加#
193 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 修改为:ScriptAlias /cgi-bin/ /var/www/cgi-bin/
并且在其下方添加一行: ScriptAlias /index.html /var/www/index.html(测试的时候只要输入IP地址就可以直接找到默认的首页文件index.html,例如:http://192.168.7.185/就可以看到首页的内容了,在123 DirectoryIndex index.html有说明index.html为默认首页)
注:最后两行解释一下,倒数第二行指示 CGI 脚本的存放位置(别称),倒数第一行指示默认首页存放的位置。

三、测试
         首先在S3c2410的NFS文件系统中rootfs/var目录下使用mkdir www命令创建一个www目录。同时在www 目录下建立一个 cgi-bin脚本目录,然后拷贝刚刚编译好的可执行文件 boa以及 boa.conf到 www 目录下,再从主机下/etc 目录下找到 mime.types 拷贝到rootfs/var/www目录下。
这样一个测试环境就搭建好了.
    下面进行静态网页测试与脚本测试两个部分:
静态网页测试:
在主机端板子的NFS网络文件系统/var/www/目录下(在配置boa.conf文件时指定了静态网页的存放地址)目录下vim index.html 创建一个简单网页如下:

<html>
<head><title> BOA TEST </title>
</head>
<body>
<h1> Hello BOA </h1>
</body>
</html>

    进入终端平台 S3c2410 平台的 var/www目录下,运行 ./boa   (当然你也可以让它开机自启动,只要在根文件系统 /etc/inittab中添加  null::wait:/var/www/boa& 就好)

[01/Jan/1970:01:06:53 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:01:06:53 +0000] boa: server built Sep 10 2011 at 23:11:45.
[01/Jan/1970:01:06:53 +0000] boa: starting server pid=801, port 80

 

 启动浏览器,输入192.168.7.185(配置文件末尾指定了默认首页的默认路径为/var/www中,并且boa.conf文件中123 DirectoryIndex index.html)(S3c2410平台服务器 IP)

测试成功!

CGI脚本测试:
写一个简单的 hello.c程序,如下:

#include<stdio.h>
int main()
{
    printf("Content-type: text/html\n\n");//这是一个MIME 头信息,告诉 Web 服务器随后的输出是以 html 文本的形式一定要两个\n哦
    printf("<html>\n");
    printf("<head><title>BOA CGI TEST</title></head>\n");
    printf("<body>\n");
    printf("<h1>BOA CGI TEST</h1>\n");
    printf("</body>\n");
    printf("</html>\n");
    exit(0);
}


然后进行交叉编译,将得到的 hello.cgi拷贝到 网络文件系统 /rootfs/var/www/cgi-bin 目录下
# arm-linux-gnu-gcc – o hello.cgi hello.c
在浏览器中输入 192.168.7.185/cgi-bin/hello.cgi
可以看到预想页面,表示CGI测试通过!

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值