BOA服务器搭建与简单运用
确定任务
1、掌握boa服务器的工作原理和应用;
2、熟悉基本网页编程。
3、熟悉CGI编程。
学习内容
网页实现获取zigbee节点数据,并且不断更新。
原理知识
1、Boa服务器原理:
(1)服务器软件(BOA)始终在HTTP 端口守候客户端的连接请求,当客户端向服务器发起一个连接请求后,客户端和服务器之间经过“三步握手”建立起连接。
(2)在接收到客户端的HTTP 请求消息后,服务器对消息进行解析,包括:读取请求URL、映射到对应的物理文件、区分客户端请求的资源是静态页面还是CGI 应用程序等。
(3)如果客户请求的是静态文件,那么服务器读取相应的磁盘文件,并将其作为HTTP 响应消息中的实体返回给客户端,如果客户端请求的是CGI 应用程序,那么服务器将创建相应的CGI 应用程序进程,并将各种所需信息(客户端请求信息、服务器端相关信息等)按CGI 规范传递给CGI 应用程序进程,此后由CGI 应用程序接管控制。
CGI 应用程序的工作原理
(1)CGI 应用程序读取从Web 服务器传递来的各种信息,并对客户端的请求进行解释和处理,如:使用SQL 语句来检索或者更新数据库。
(2)CGI 应用程序将处理结果按照CGI 规范返回给Web 服务器,Web 服务器会对CGI 应用程序的处理结果进行解析,并在此基础上生成HTTP 响应信息返回给客户端。
3、嵌入式Web服务器软件构成与工作原理图
三、操作步骤
移植boa服务器::
开发平台:
主机:VMWare--Ubuntu 10.04 LTS
开发板:GEC210 / linux-
编译器:arm-linux-gcc-4.5.1
所需软件:boa-0.94.13.tar.gz
下载: /boa-0.94.13.tar.gz
1、移植步骤
BOA 服务程序编译
1、设置好交叉编译工具链路径:
export PATH=/usr/local/arm/4.5.1/bin:$PATH
2、解压下载好的BOA 压缩包
tar zxvf boa-0.94.13.tar.bz2
3、进入解压后的目录
cd boa-0.94.13
4、进入BOA 源码包的src 目录(下面操作均在该目录下进行)
cd src
5、利用configure 工具配置生成Makefile 文件
./configure
6、修改生成的Makefile 文件(设置交叉编译器)
将
CC = gcc
CPP = gcc –E
修改为:
CC=arm-linux-gcc
CPP=arm-linux-gcc –E
7、修改defines.h 文件
将#define SERVER_ROOT “/etc/boa”修改为#define SERVER_ROOT “/gec/web”
该处定义的是WEB 服务器的文件根目录,跟boa.conf 文件中的DocumentRoot 一致即可。
8、修改compat.h 文件
将#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
防止在make 时出现如下错误提示:
util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token
9、修改boa.c 文件
注释掉下面两句话:
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
#endif
否则会出现错误: getpwuid: No such file or directory
注释掉下面语句:
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
否则会出现错误: - icky Linux kernel bug!: No such file or directory
10、编译boa
make
至此,在src 目录中将得到交叉编译后的boa 程序,可以使用以下方法缩小程序的体积
arm-linux-strip boa //去掉相关调试信息,对交叉编译生成的boa 程序瘦身。
编译错误(1):
yacc? -d boa_grammar.ymake: yacc:命令未找到make: *** [y.tab.c]
解决办法:#apt-get install bison,安装完成后要再