Chinaunix首页 | 论坛 | 博客
  • 博客访问: 515597
  • 博文数量: 95
  • 博客积分: 5168
  • 博客等级: 大校
  • 技术积分: 1271
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-28 23:31
文章分类

全部博文(95)

文章存档

2013年(2)

2012年(3)

2011年(1)

2010年(8)

2009年(81)

分类: LINUX

2009-03-14 19:26:33

--------------------------------------
本文系本站原创,欢迎转载!

转载请注明出处:http://sjj0412.cublog.cn/
--------------------------
.boa web 服务器的基本原理

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, 如使用3.3.23.4.1等等会出错)

[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程序中实现具体的开发板控制操作,就可在远程通过访问网页的形式达到控制开发板的目的。

 

阅读(1302) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~