技术与人生

统计

最新评论

boa 0.94.13 在嵌入式平台的安装与配置

 

第一步:从www.boa.org下载Boa源码,将其解压并进入源码目录的src子目录。

 # tar xzf boa-0.94.13.tar.gz

 # cd boa-0.94.13/src

生成Makefile文件

# ./configure

修改Makefile文件,找到CC=gccCPP=gcc 

-E,分别将其改为交叉编译器安装的路径CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gccCPP=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc 

-E并保存退出。

然后运行make进行编译,得到可执行程序boa

# make

# /opt/host/armv4l/bin/armv4l-unknown-linux-strip boa

             

              boa 编译问题总结

              1.编译出现parse.h   找不到,就在boa-0.94.13  

              ln -s src/parse.h parse.h

2.编译器出现pasting t and -> does not give a valid preprocessing token这个错误

              经过修改 src/compat.h

              找到

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

              修改成

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

              这是另一种改法,不过没用过,我用第一种

                  找到time_offset = IMEZONE_OFFSET(t); 改成 time_offset = 0;

这时你就可以用 tftp  -g -r boa   ip 放入开发板中

                Tftp -p -l boa   ip   在开发板中将板中的文件发给主机

              

第二步:Boa的配置。    

Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。

49  Group nogroup 修改成 Group 0   

62  ErrorLog /app/web/log/error_log    改路径    这个很重要,大部分的提示都在这里一定要有,不然有错误也找不到

74  AccessLog /app/web/log/access_log 改路径   要是没改即使运行了boa运行不了,也没有任何提示,要在 error_log 中找

94  ServerName www.plm5k.com   去掉“#”号

注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory,所以必须打开。其它默认设置即可。

111 DocumentRoot /app/web/html   放网页的地方

155 MimeTypes /app/web/conf/mime.types 将主机上的"/etc/mime.types" 放到指定目录中

193 ScriptAlias /cgi-bin/ /app/web/cgi-bin/           将后面的路径改为所要指定的目录

 

(可以将主机/usr/share/doc/HTML/目录下的index.html文件和img目录复制到、/app/web/html目录下)

第三步:测试

1.静态HTML网页

在目标板上运行boa程序,将主机与目标机的ip设成同一网段,然后打开任一个浏览器(linuxwindow下都可),输入目标板的ip地址(http//10.10.10.2)即可打开/var/www/index.html网页

./boa -c /app/web/conf   指定boa.conf的配置文档

测试: 写了一个很简单的cgi helloworld.c 

 #include <stdio.h>

int main(void)

{

        printf("Content-type: text/html\n\n");//据说是固定格式

        printf("<html>\n");

        printf("<head><title>CGI Output</title></head>\n");

        printf("<body>\n");

        printf("<h1>Hello,world.</h1>\n");

        printf("<body>\n");

        printf("</html>\n");

        exit(0);

}     

 armlinuxgcc编译成helloworld.cgi,放在嵌入式的扳子下面  

 能够直接执行,即./helloworld.cgi结果正确  

 但是在pc机上的浏览器里面不能正确浏览,提示错误:  

 502   Bad   Gateway  

 The   CGI   was   not   CGI/1.1   compliant.  

    原因权限问题boa   运行的用户与你shell所在的用户非同一用户,  

 请用   chmod   a+rx   让所有用户都执行权限试下.      

 同时请修改下   boa   CGI支持的缺陷,   :  

 http://bbs.chinaunix.net/viewthread.php?tid=824840  

 最后:

 如果要将运行用户为 root 则还要改, 首先在 boa.conf  

 48   User nobody 改为   User root

 如果这样重新运行boa 则会邮错,请看 error_log 中的提示

       src/boa.c:226 - icky Linux kernel bug!: Success

 linux中很少以root 用户作为应用程的运行者,一般的应用程序也会禁止认root作为程序的运行者

 所以在boa.c 225行中有

      if (setuid(0) != -1)

 {

        DIE("icky Linux kernel bug!");

     }

    只要将其注释掉即可

posted on 2008-03-24 10:51 苏艺伟 阅读(3561) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。