第一步:从www.boa.org下载Boa源码,将其解压并进入源码目录的src子目录。
# tar xzf boa-0.94.13.tar.gz
# cd boa-0.94.13/src
生成Makefile文件
# ./configure
修改Makefile文件,找到CC=gcc和CPP=gcc
-E,分别将其改为交叉编译器安装的路径CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc和CPP=/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 boaip放入开发板中
Tftp -p -l boaip在开发板中将板中的文件发给主机
第二步: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设成同一网段,然后打开任一个浏览器(linux或window下都可),输入目标板的ip地址(http://10.10.10.2)即可打开/var/www/index.html网页
./boa -c /app/web/conf指定boa.conf的配置文档
测试:写了一个很简单的cgi helloworld.c
#include
int main(void)
{
printf("Content-type: text/html\n\n");//据说是固定格式
printf("\n");
printf("
CGI Output\n");
printf("
\n");
printf("
Hello,world.
\n");
printf("
\n");
printf("\n");
exit(0);
}
用arm-linux-gcc编译成helloworld.cgi,放在嵌入式的扳子下面
能够直接执行,即./helloworld.cgi结果正确
但是在pc机上的浏览器里面不能正确浏览,提示错误:
502BadGateway
TheCGIwas notCGI/1.1compliant.
原因:权限问题boa运行的用户与你shell所在的用户非同一用户,
请用chmoda+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 苏艺伟 阅读(3113) 评论(0) 编辑 收藏 引用