分类: LINUX
2009-03-14 19:26:33
--------------------------------------
本文系本站原创,欢迎转载!
Boa其实可以看成网络服务器,特殊的网络服务器,只不过它通常监听web应用的常用端口80端口,只不过他能够解释http协议,如get,post等,当文件为一般文件时,它直接传送给客户端,如果是CGI程序,则它创建一个新的进程执行这个CGI程序,具体和客户端的交互由CGI程序完成,为了CGI程序能够方便的和客户端交互,boa程序将CGI的标准输出重定位到了套接字文件上,这样CGI程序往标准输出输出的内容就是通过网络传递给客户端的数据,这样就达到了和客户段的交互。
二.Boa移植
1.下载Boa源码
下载地址:
最新发行版本: 0.94.13
下载 boa-0.94.13.tar.gz
将下载的文件放入用户目录
解压:# tar xzf boa-0.94.13.tar.gz
2、生成Makefile文件
boa-0.94.13.tar.gz解压后生成boa-0.94.13目录,运行boa-0.94.13/src/configure文件,
执行:
#cd boa-0.94.13/src
#./configure
3、修改Makefile文件(注意:必须用cross-2.95.3, 如使用
[1]添加
CROSS_COMPILE=/usr/local/arm/2.95.3/bin/arm-linux-
[2] 修改 CC = gcc
为 CC = $(CROSS_COMPILE)gcc (根据自己电脑主机的编译器位置定)
[3] 修改 CPP = gcc - E
为 CPP = $(CROSS_COMPILE)gcc -E
4.Boa的配置
这一步的工作也在电脑主机上完成。
在电脑主机上的Boa源码boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。如下:
#vi boa.conf
1、Group的修改
修改 Group nogroup
为 Group 0
3. User的修改
修改 User nogroup
为 User 0
上面必须改,否则当在网页中访问CGI文件时,服务器执行CGI程序有问题。
2、ScriptAlias的修改
修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
3、ServerName的设置
修改#ServerName
为 ServerName
注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。
5.开发板根文件系统文件夹及文件添加
将mime.types文件复制根文件系统/etc目录下,通常可以从linux主机的 /etc目录下直接复制即可。
#cp /etc/mime.types etc/
同时创建web服务器根目录 /var/www,网关程序文件夹
Mkdir –m 777 /var/www
Mkdir –m 777 /var/www/cgi-bin 网关程序文件夹
然后将html文件复制到/var/www中,然后在主机通过Ip地址就可以访问到开发板的网页文件了
如果执行boa出现如下错误时," icky Linux kernel bug!:No such file"
修改 src/boa.c,注释掉如下内容:
/*if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}*/
/*if (passwdbuf == NULL) {
DIE("getpwuid");
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE("initgroups");
}*/
重新编译。
3.boa应用
当你移植完了boa后,如果只是在主机访问开发板的网页,这个就太不值了,所以一般大家都是用boa来向用户提供友好的开发板控制界面。
例如,当用户点击网页的某个部分时,向服务器发送执行CGI程序,那么作用就大多了,因为这个CGI程序就是开发板上的可执行程序,当然只要在CGI程序中实现具体的开发板控制操作,就可在远程通过访问网页的形式达到控制开发板的目的。