boa服务器 系统设置,系统应用-BOA服务器搭建与简单运用.docx

本文详细介绍了如何在Ubuntu 10.04 LTS上为GEC210/Linux开发板移植 boa 0.94.13 服务器,包括设置交叉编译环境、修改源码以适应目标系统,以及解决编译过程中遇到的问题。通过此过程,读者将理解BoA服务器的工作原理,CGI应用程序的交互方式,以及如何实现通过网页获取Zigbee节点数据的实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,安装完成后要再

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值