嵌入式BOA服务器文档

合集下载

ARM嵌入式Web服务器Boa的软、硬件设计 毕业设计

ARM嵌入式Web服务器Boa的软、硬件设计 毕业设计

摘要论文主要介绍了基于ARM9的嵌入式Web服务器Boa的软、硬件设计及其实现,其中硬件部分的核心是三星的S3C2410X为处理器。

最后成果形式为可以远程访问的WebServer嵌入式服务器。

Boa是一款单任务的HTTP服务器。

与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程, 也不通过复制自身进程来处理多链接。

而是通过建立HTTP请求列表来处理多路HTTP连接请求。

同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。

同时它还具有自动生成目录、自动解压文件等功能。

因此, Boa在嵌入式系统中具有很高的应用价值。

关键词:ARM;Linux;嵌入式Web服务器;CGIThis paper has mainly developed the software hardware design and realization of the embedded Web server Boa based on ARM. And the core of the hardware part is S3C2410X microprocessor produced by Samsung . The final achievement is the embedded webserver which can remote visit. Boa is a single-tasking HTTP server. That means that unlike traditional webservers, it does not fork for each incoming connection, nor does it fork many copies of itself to handle multiple connections. It internally multiplexes all of the ongoing HTTP connections. And forks only for CGI programs, this is very important to embedded system. At the same time, it also has the function of automatic directory generation、automatic file gunzipping and so on. So Boa is of highly value in the embedded system application.Keywords: ARM;Linux;Embedded Web server;CGI摘要 (1)Abstract (2)目录 (3)第一章引言 (5)第二章课题背景 (6)2.1 嵌入式系统简介 (6)2.2 嵌入式系统和Linux (6)2.3 ARM9硬件平台 (7)2.3.1 ARM简介 (7)2.3.2 JXARM9-2410 ARM嵌入式教学实验系统 (8)第三章嵌入式Web服务器 (9)3.1 概述 (9)3.2 Web服务器原理 (9)3.3 嵌入式Web服务器实现原理 (9)3.3.1 TCP/IP协议 (9)3.4 嵌入式Web服务器Boa (10)3.4.1 Boa概述 (10)3.4.2 Boa的功能实现 (11)第四章CGI技术 (12)4.1 CGI概述 (12)4.2 CGI工作原理 (12)第五章建立嵌入式系统开发环境 (14)5.1 在Vmware下安装Redhat 9.0 (14)5.2 编译配置主机开发环境 (18)5.2.1 配置以太网 (18)5.2.2 安装配置tftp服务器 (19)5.2.3 配置防火墙 (21)5.2.4 配置NFS服务器 (22)5.3 JXARM9-2410中U-boot烧写 (22)5.3.1 u-boot的功能 (22)5.3.2 使用ADT IDE烧写u-boot (23)第六章系统功能的实现 (25)6.1 GCC简介 (25)6.1.1 GCC概述 (25)6.1.2 GCC基本用法 (25)6.2 Linux内核移植 (26)6.2.1 Linux内核源代码的安装 (26)6.2.2 Linux交叉编译环境的建立和使用 (27)6.2.3 Linux内核的配置和编译 (27)6.3 加载Linux内核映像 (30)6.4 Boa Web服务器的移植 (31)6.4.1 Boa Web服务器的建立 (31)6.5 Linux下动态Web页面的实现 (32)6.5.1 CGI程序分析 (32)6.5.2 Form输入的分析和解码 (34)第七章系统功能的测试 (36)7.1 测试Web服务器 (36)7.2 动态Web页面测试 (37)结束语 (40)致谢 (41)参考文献 (42)附录 (43)第一章引言随着计算机技术的发展,嵌入式系统已成为计算机领域的一格重要组成部分。

嵌入式Web服务器Boa移植.ppt

嵌入式Web服务器Boa移植.ppt
该处定义的是WEB 服务器的文件根目录,跟boa.conf 文件 中的DocumentRoot 一致即可。 8、修改compat.h的第120行
修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 防止在make 时出现如下错误提示: util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token。
该文件目前在虚拟机的/opt/boa-0.94.13。
下面修改boa.conf文件:
1、修改用户与用户组信息
第48行:User nobody
第49行:Group nogroup
改为:第48行: User 0
第49行:Group 0
在根文件系统中的/etc/passwd 文件中没有nobody 用户,所以设成
Boa编译
10、编译boa #make 至此,在src 目录中将得到交叉编译后的boa 程序。
修改BOA配置信息
BOA的配置信息都保存在文件boa.conf中,故该文件是 BOA的配置文件,该文件是最终要放在实验箱的 /gec/web目录下,BOA默认在该路径下读取相关的所有 配置信息。
第74行:Accesslog /var/log/boa/access_log
改为:#Accesslog /var/log/boa/access_log
3、第94行,打开ServerName 的设置: 将#ServerName .here 前面的#号去 掉,该项默认为未打开,执行Boa 会异常退出,提示 “gethostbyname::No such file or directory”,所以必 须打开。

boa_流程分析

boa_流程分析

boa 流程分析默认分类2010-01-19 19:10:38 阅读291 评论0 字号:大中小订阅引言随着企业安全意识的增强以及现代化管理水平的提高,对设备的远程监控在工业控制系统中得到了越来越广泛的应用。

近年来,Web技术广泛普及,把Web 技术应用在这种监控系统中,可以让操作者通过浏览器维护和管理监测点,查看监测数据。

同时,监测中心的服务程序也可以很方便地通过Web把监测数据取回来,进行进一步的处理,十分方便。

μClinux是应用于微控制领域的一种嵌入式Linux操作系统,它源码开放,移植性好,支持多种硬件平台和几乎所有常见网络通信协议,支持文件系统丰富,是一个功能完整的嵌入式操作系统。

并且有大量优秀的开放源代码的应用软件和开发工具可用,因此,采用μClinux作为操作平台,使用Web技术进行远程在线监测系统的开发。

1 嵌入式Web服务器为了能够通过Web来维护和管理远程在线监控系统,必须选择一个恰当的Web服务器,不但要求所选择的Web服务器支持动态Web技术,也要求它能够在嵌入式系统中稳定地工作。

1.1 Web服务器原理和功能嵌入式Web服务器以TCP/IP协议栈为基础构建,需要实现HTTP,TCP和UDP等协议。

任何一个客户机,都可以通过HTTP协议与嵌入式Web Server建立连接。

嵌入式Web服务器在Web浏览器和设备之间提供了统一的GUI接口,使得客户端可以像在本地一样透明地监控管理设备状况。

嵌入式Web服务器的主要功能有:响应多个客户的实时HTTP请求,并为每个客户建立连接,这是嵌入式Web服务器的首要功能;对设备的实时监控管理,参数的在线查看与配置等;对设备访问的安全控制机制,包括SSL、用户口令等;实现设备的故障智能报警。

1.2 Boa的特点在μClinux中常用的Web服务器有:Boa,thttpd,httpd,其中httpd只支持静态页面,显然不适合高级应用,thttpd和Boa所提供的功能基本一样,但是thttpd在运行过程中所需要的资源要远大于Boa,因此使用Boa作为该嵌入式系统的Web服务器。

Ubuntu 配置 boa 服务器

Ubuntu 配置 boa 服务器

Ubuntu 配置boa 服务器Ubuntu上编译用法boa服务器的教程文章,已经有无数了,博客上也有无数人写了,我就不赘述了,在这里贴出几处初次用法boa的伴侣可能碰到的问题执行 boa 检查 error_log 里面的内容,有如下错误:boa.c:194 - unable to bind: Aress already in use 由于是在pc 机上,默认的boa.conf 里面Port的端口设置为 80,因此运行 boa 时会有如上错误,可以在 error_log文件里面查看到解决方法:修改boa.conf 里面的 port 值为 8080(可指定其它未被用法的)保存即可。

再次尝试,扫瞄器地址栏里输入:192.168.1.111:8080后,www 名目下的 ind.html 拜访正常接下来测试cgi程序:扫瞄器地址栏里输入:192.168.1.111:8080/cgi-bin/test.cgi 有可能碰到 bad gateway 的错误,或者在error_log里面提醒: request from192.168.1.119 "GET /favicon.ico HTTP/1.1"("/var/www/favicon.ico"): document open: No ch or directory [01/Aug/2011:10:04:37 +0000] request from 192.168.1.119 "(null)" ("(null)"): header read: Connection -9 p(boa)重新启动boa,再次通过扫瞄器拜访cgi,拜访胜利!注:做嵌入式开发板上的boa移植时,这里的确如无数博友写的,修改 User 及 Group 后面的参数为 0,可是初次在Ubuntu里面用法boa的伴侣可能就忽视了这个。

BOA服务器的配置

BOA服务器的配置

#避免使用mime.types文件,此时需要用AddType在本文件里指明
MimeTypes /etc/mime.types
#文件扩展名没有或未知的话,使用的缺省MIME类型
DefaultType text/plain
5.#将文件扩展名和MIME类型关联起来,和mime.types文件作用一样。如果用mime.types
/
, 或者

最新发行版本: 0.94.13
下载 boa-0.94.13.tar.gz,注意:从boa上下载的是boa-0.94.13.tar.tar,解压方式一样
2、ScriptAlias的修改 修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
3、ServerName的设置修改 ServerName
.here
第二步 Boa的配置 Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。
1、Group的修改 修改 Group nogroup
为 Group 0
由于在/etc/group文件中没有nogroup组,所以设成0。另外在/etc/passwd中有nobody用户,所以User nobody不用修改。
b、 修改 CPP = gcc - E
为 CPP = /usr/local/arm/2.95.3/bin/arm-linux-gcc -E
4、编译 # make
# /usr/local/arm/2.95.3/bin/arm-linux-strip boa

BO服务器安装文档

BO服务器安装文档

1.启动安装程序:
2.查看安装的先决条件:
3.安装.net framework 后再重新安装:
4.条件都成功后,点击下一步:
5.进入下一步:
6.选择接受后进入下一步:
7.填写密钥后进入下一步:
8.选择安装语言:
9.默认选择“完整”:
10.根据需要选择安装路径:
11.更改默认选择,选择“配置现有数据库”:
12.选择资料库所在的数据库类型:
13.更改默认选项,选择“无审核数据库”:
14.无需更改,进入下一步:
15.默认选项,进入下一步:
16.默认节点和端口号信息,进入下一步:
17.默认CMS端口号,进入下一步:
18.设置BI登录密码:
19.填写对应数据库的信息:
20.默认选择,若有冲突再更改:
21.默认选择,进入下一步:
22.设置subversion密码:1qaz2wsx
23.默认选择,进入下一步:
24.选择“不配置”,进入下一步:
25.进入下一步:
26.安装完成:。

Boa应用-web网页配置A40i-飞凌嵌入式

Boa应用-web网页配置A40i-飞凌嵌入式

Boa应用-web网页配置A40i-飞凌嵌入式一、简要说明本文主要讲解A40i Boa应用,适用于飞凌 A40i 系列FETA40i-C 核心板Linux3.10 操作系统,其他平台也可以参考,但是不同平台之间会存在差异,需客户自行修改以适应自己的使用。

编写本文章的主要目的是协助客户加速产品的研发速度,由于小编水平有限,在服务过程中所提供的任何资料和信息,都仅供参考,客户有权不使用或自行参考修改,本文章参考资料和信息的完整性、可靠性等问题请自行验证。

硬件平台简介:FETA40i-C核心板基于全志工控行业平台级处理器四核Cortex-A7 A40i设计,主频1.2GHz,集成MAli400MP2 GPU,内存1GB/2GB DDR3L,存储8GB eMMC。

支持绝大部分当前流行的视频及图片格式解码,具有稳定可靠的工业级产品性能和高性价比低功耗等优势,搭载Linux和Android操作系统,适用于基于视觉交互的工业控制产品,目标应用包含,嵌入式设备、智能终端、工业控制、数据采集、机器视觉、工业物联网、移动互联设备、数字标牌等。

<第二章 A40i系列Boa应用Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。

作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。

但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。

1、Boa配置文件Boa配置文件在/etc/boa/boa.conf常用配置说明:(可根据项目需要,将以下配置添加到配置文件里)Group nogroupUser nobody这两个配置是配置boa的运行的属主和属组,如果cgi要配置网卡地址,就必须修改成User rootCGIPath /bin:/usr/bin:/usr/local/bin:/sbinCgi程序运行的一个程序搜索路径;比如运行ifconfig eth0 192.169.0.232就必须配置/sbin路径;ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ /usr/lib/cgi-bin/ 是cgi程序放到boa中的绝对地址,/cgi-bin/ 是客户在网页中提交的cgi地址;例如:/usr/lib/cgi-bin/中放置一个app.cgi;网页访问时候使用/cgi-bin/app.cgi?type=conf&random=0.1111DocumentRoot /var/www这个是虚拟目录在开发板中的真实目录/var/log/boa/access_log日志需要的文件夹和名字VerboseCGILogs调试日志开关,正式运行时候关闭。

嵌入式BOA服务器文档

嵌入式BOA服务器文档

基于BOA的嵌入式WEB SERVER的设计随着网络技术的不断发展,网络现在已无处不在。

Linux最大的好处在于其良好的网络功能,因此在该系统中,我们通过设计WEB 服务器,使用户能通过浏览器访问设备上的Web服务器来远程控制现场设备。

嵌入式Linux下,系统资源是非常有限的,因此我们选择Web服务器时,要考虑到其资源有限的特点;Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。

作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。

但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。

现在,多数嵌入式Linux的代码中已经包含boa的源代码,在嵌入式Linux下实现Boa 只需要对Boa做一些简单的配置和修改。

这主要通过对boa.conf、boa.c、mime.types等文件进行修改来实现。

服务器中主要包括boa和CGI两部分,其中Boa管理着返回客户端的WEB 页面,而CGI控制着客户端和服务器端的信息交换,所以我们可以通过编写相应的CGI程序来实现所需要的功能。

Boa服务器的实现主要分为两步,boa服务器的移植和CGI程序的设计。

1 、boa 服务器移植Boa服务器的移植主要分为以下步骤进行:(1)首先下载boa源代码,网上有很多关于boa的源码下载网站,官方网址为:/;(2)根据目标平台修改boa的配置文件boa.conf,以及相关的源代码文件boa.c,log.c。

(3)执行configure生成Makefile,并修改Makefile中CC和CPP等项,改成与目标平台对应的编译工具;(4)交叉编译源代码,生成可执行文件boa;(5)拷贝配置文件boa.conf和可执行程序boa到文件系统中。

此时就可以在目标板中运行boa程序了。

下面具体介绍一下如何在ARM平台上移植boa服务器:本系统中采用的boa源码是boa-0.94.13.tar.gz, 将下载的源码拷贝到工作目录解压,# tar xzf boa-0.94.13.tar.gz这里注意下系统中需要安装bison,flex等工具,如果在U-BOOT移植中已经在开发主机中安装过这些工具,则可以跳过这一步骤。

嵌入式WEB服务器BOA的应用研究

嵌入式WEB服务器BOA的应用研究

而 不 会 创 建 (o k m 新 的 进 程 来 处 理 并 发 连 接 请 求 , fr ) 但
B OA 支 持 C , 且 能 为 CG GI并 I程 序 创 建 出 一 个 新 的 进 程 来 执 行 。B OA 服 务 器 的设 计 目标 是 速 度 快 和 安 全 性 好 , 在 其 站 点 公 布 的性 能 测 试 中 , OA 的性 能 要 好 于 Ap c e B a h 服 务 器 的性 能 。 嵌入式 WE B服 务 器 BOA 和 普 通 WE B服 务 器 一 样 ,
⑦ 去 除 其 中的 调 试 信 息 , 以减 小 文 件 的大 小 。
# a m —i x s rp s lt 3 r l nu - ti qie
4 基 于 O 的数 据 库 访 问技 术 [ GI 4
C ( mmo twa ne fc , 共 网 关 接 口) GICo n Gae y I tra e 公 定
① 从 www. qi . r s l e o g下 载 sl e2 8 1 . a. z源 t qi 一 . . 7 tr g t 码 , 解压 。 并
② 解压 。
# tr~ z fb a 0 9 . 3 t r g a x v o ~ . 4 1 . a . z
③ 进 入 源代 码 目录 。
IEl_ 一w 、 : 嵌服 i务 入器 式 B
图 1 嵌 入 式 WE B服务 器 的工 作 过 程
图 2为 硬 件 系 统 结 构 框 图 。嵌 入 式 WE B服 务 器 采 用
¥ C2 1 3 4 0作 为 整 个 系 统 的 处 理 器 。¥ C2 1 3 4 0是 S ms n a ug 公 司 的 一 款 基 于 ARM9 0 内核 的 1 / 2位 R S 2T 63 I C嵌 入 式

Linux下嵌入式Web服务器BOA和CGI编程开发

Linux下嵌入式Web服务器BOA和CGI编程开发

Linux下嵌⼊式Web服务器BOA和CGI编程开发**⽬录**⼀、环境搭建⼆、相关配置(部分)三、调试运⾏四、测试源码参考五、常见错误六、扩展(CCGI,SQLite)# ⼆、相关配置(部分)boa我的配置:/etc/boa$ sudo vi boa.conf# 下⾯⼏个都是关键点,基本就错这⼏个点上# cumentRoot /var/www#将cgi保存的实际位置和⽹站地址做个对应# ScriptAlias /cgi-bin/ /var/www/cgi-bin/#cgi脚本运⾏时能看到的$PATH(可选)# CGIPath /bin:/usr/bin:/usr/local/bin#如果想在任何位置都能运⾏cgi,要添加这个(可选)AddType application/x-httpd-cgi cgi# Boa v0.94 configuration file# File format has not changed from 0.93# File format has changed little from 0.92# version changes are noted in the comments## The Boa configuration file is parsed with a lex/yacc or flex/bison# generated parser. If it reports an error, the line number will be# provided; it should be easy to spot. The syntax of each of these# rules is very simple, and they can occur in any order. Where possible# these directives mimic those of NCSA httpd 1.3; I saw no reason to# introduce gratuitous differences.# $Id: boa.conf,v 1.252002/03/2204:33:09 jnelson Exp $# The "ServerRoot" is not in this configuration file. It can be compiled# into the server (see defines.h) or specified on the command line with# the -c option, for example:## boa -c /usr/local/boa# Port: The port Boa runs on. The default port for http servers is 80.# If it is less than 1024, the server must be started as root.# 端⼝⽼是被占⽤,所以我改掉了Port 88# Listen: the Internet address to bind(2) to. If you leave it out,# it takes the behavior before 0.93.17.2, which is to bind to all# addresses (INADDR_ANY). You only get one "Listen" directive,# if you want service on multiple IP addresses, you have three choices:# 1. Run boa without a "Listen" directive# a. All addresses are treated the same; makes sense if the addresses# are localhost, ppp, and eth0.# b. Use the VirtualHost directive below to point requests to different# files. Should be good for a very large number of addresses (web# hosting clients).# 2. Run one copy of boa per IP address, each has its own configuration# with a "Listen" directive. No big deal up to a few tens of addresses.# Nice separation between clients.# The name you provide gets run through inet_aton(3), so you have to use dotted# quad notation. This configuration is too important to trust some DNS.#Listen 192.68.0.5# User: The name or UID the server should run as.# Group: The group name or GID the server should run as.Group 0# ServerAdmin: The email address where server problems should be sent.# Note: this is not currently used, except as an environment variable# for CGIs.#ServerAdmin root@localhost# ErrorLog: The location of the error log file. If this does not start# with /, it is considered relative to the server root.# Set to /dev/null if you don't want errors logged.# If unset, defaults to /dev/stderrErrorLog /var/log/boa/error_log# Please NOTE: Sending the logs to a pipe ('|'), as shown below,# is somewhat experimental and might fail under heavy load.# "Usual libc implementations of printf will stall the whole# process if the receiving end of a pipe stops reading."#ErrorLog "|/usr/sbin/cronolog --symlink=/var/log/boa/error_log /var/log/boa/error-%Y%m%d.log"# AccessLog: The location of the access log file. If this does not# start with /, it is considered relative to the server root.# Comment out or set to /dev/null (less effective) to disable# Access logging.# AccessLog /var/log/boa/access_log# Please NOTE: Sending the logs to a pipe ('|'), as shown below,# is somewhat experimental and might fail under heavy load.# "Usual libc implementations of printf will stall the whole# process if the receiving end of a pipe stops reading."#AccessLog "|/usr/sbin/cronolog --symlink=/var/log/boa/access_log /var/log/boa/access-%Y%m%d.log" # UseLocaltime: Logical switch. Uncomment to use localtime# instead of UTC time#UseLocaltime# VerboseCGILogs: this is just a logical switch.# It simply notes the start and stop times of cgis in the error log# Comment out to disable.#VerboseCGILogs# ServerName: the name of this server that should be sent back to# clients if different than that returned by gethostname + gethostbynameServerName .here# VirtualHost: a logical switch.# Comment out to disable.# Given DocumentRoot /var/www, requests on interface 'A' or IP 'IP-A'# become /var/www/IP-A.# Example: http://localhost/ becomes /var/www/127.0.0.1## Not used until version 0.93.17.2. This "feature" also breaks commonlog# output rules, it prepends the interface number to each access_log line.# You are expected to fix that problem with a postprocessing script.#VirtualHost# DocumentRoot: The root directory of the HTML documents.# Comment out to disable server non user files.DocumentRoot /var/www# UserDir: The name of the directory which is appended onto a user's home# directory if a ~user request is recieved.UserDir public_html# DirectoryIndex: Name of the file to use as a pre-written HTML# directory index. Please MAKE AND USE THESE FILES. On the# fly creation of directory indexes can be _slow_.DirectoryIndex index.html# DirectoryMaker: Name of program used to create a directory listing.# Comment out to disable directory listings. If both this and# DirectoryIndex are commented out, accessing a directory will give# an error (though accessing files in the directory are still ok). DirectoryMaker /usr/lib/boa/boa_indexer# DirectoryCache: If DirectoryIndex doesn't exist, and DirectoryMaker# has been commented out, the the on-the-fly indexing of Boa can be used # to generate indexes of directories. Be warned that the output is# extremely minimal and can cause delays when slow disks are used.# Note: The DirectoryCache must be writable by the same user/group that # Boa runs as.# DirectoryCache /var/spool/boa/dircache# KeepAliveMax: Number of KeepAlive requests to allow per connection# Comment out, or set to 0 to disable keepalive processing KeepAliveMax 1000# KeepAliveTimeout: seconds to wait before keepalive connection times out KeepAliveTimeout 10# MimeTypes: This is the file that is used to generate mime type pairs# and Content-Type fields for boa.# Set to /dev/null if you do not want to load a mime types file.# Do *not* comment out (better use AddType!)MimeTypes /etc/mime.types# DefaultType: MIME type used if the file extension is unknown, or there# is no file extension.DefaultType text/plain# CGIPath: The value of the $PATH environment variable given to CGI progs. CGIPath /bin:/usr/bin:/usr/local/bin# SinglePostLimit: The maximum allowable number of bytes in# a single POST. Default is normally 1MB.# AddType: adds types without editing mime.types# Example: AddType type extension [extension ...]# Uncomment the next line if you want .cgi files to execute from anywhere#AddType application/x-httpd-cgi cgi# Redirect, Alias, and ScriptAlias all have the same semantics -- they# match the beginning of a request and take appropriate action. Use# Redirect for other servers, Alias for the same server, and ScriptAlias# to enable directories for script execution.# Redirect allows you to tell clients about documents which used to exist in# your server's namespace, but do not anymore. This allows you to tell the # clients where to look for the relocated document.# Example: Redirect /bar http://elsewhere/feh/bar# Aliases: Aliases one path to another.# Example: Alias /path1/bar /path2/fooAlias /doc /usr/doc# ScriptAlias: Maps a virtual path to a directory for serving scripts# Example: ScriptAlias /htbin/ /www/htbin/ScriptAlias /cgi-bin/ /var/www/cgi-bin/View Codecgi我的配置:sudo vi /etc/apache2/sites-enabled/000-defaultServerName 127.0.0.1<VirtualHost *:80>ServerAdmin webmaster@localhostDocumentRoot /var/www<Directory />Options FollowSymLinksAllowOverride None</Directory><Directory /var/www/>Options Indexes FollowSymLinks MultiViews AllowOverride NoneOrder allow,denyallow from all</Directory>ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<Directory "/usr/lib/cgi-bin">AllowOverride NoneOptions +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,denyAllow from all</Directory>ErrorLog ${APACHE_LOG_DIR}/error.log# Possible values include: debug, info, notice, warn, error, crit, # alert, emerg.LogLevel warnCustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/"<Directory "/usr/share/doc/">Options Indexes MultiViews FollowSymLinks AllowOverride NoneOrder deny,allowDeny from allAllow from 127.0.0.0/255.0.0.0 ::1/128</Directory></VirtualHost>View Code下⾯提供⼏个测试代码,转⾃其他⼤佬,不过我找不到⽹址了。

嵌入式Web服务器BOA实现原理

嵌入式Web服务器BOA实现原理

嵌入式Web服务器BOA实现原理
.嵌入式W eb服务器BOA实现原理
BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合应用在嵌入式系统中。

BOA服务器主要功能是在互联嵌入式设备之间进行信息交互,达到通过网络对嵌入式设备进行监控,并将反馈信息自动上传给主控设备的目的。

它是基于HTTP超文本传输协议的,Web 网页是Web服务最基本的传输单元。

嵌入式Web服务的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,也即著名的B/S结构。

运行于客户端的浏览器首先要与嵌入式Web 服务器BOA端建立连接,打开一个套接字虚拟文件,此文件建立标志着SOCKET连接建立成功然后客户端浏览器通过套接字SOCKET以GET或者POST参数传递方式向Web服务器提交请求,Web浏览器提交请求后,通过HTTP协议传送给Web服务器。

Web服务器接到请求后,根据请求的不同进行事务处理,返回HTML文件或者通过CGI调用外部应用程序,返回处理结果。

服务器通过CGI与外部应用程序和脚本之间进行交互,根据客户端浏览器在请求时所采用的方法,服务器会搜集客户所提供的信息,并将该部分信息发送给指定的CGI扩展程序,CGI扩展程序进行信息处理并将结果返回给服务器,然后服务器对信息进行分析,并将结果发送回客户端在浏览器上显示出来。

嵌入式linuxweb服务器boa的移植方法arm开发板linux嵌入式web服务器boa

嵌入式linuxweb服务器boa的移植方法arm开发板linux嵌入式web服务器boa

嵌入式linux web服务器boa的移植方法/arm开发板linux嵌入式web服务器boa今天自己在开发板上移植了boa服务器。

参考资料是李驹光、郑耿大侠在恒颐论坛上的帖子。

李大侠写的好,我没有费什么力气就搞定了,:-)。

步骤如下:1.从bbb:///下载Boa源码,将其解压并进入源码目录的src子目录# tar -zxvf boa-0.94.13.tar.gz# cd boa-0.94.13/src2.生成Makefile文件# ./configure修改Makefile文件,a.找到CC=gcc,将其改成CC = arm-linux-gcc,b.找到CPP = gcc –E,将其改成CPP = arm-linux-gcc –E,保存退出。

3.运行make进行编译,得到的可执行程序为boa,并将调试信息剥去# make# arm-linux-strip boa4.编写boa.conf5.cp boa 到开发板的/bin目录下,在开发板/etc目录下建boa目录,cp boa.conf 到板子的/etc/boa目录。

6.创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,创建CGI脚本所在目录/var/www/cgi-bin/,在/var/www中放置一个index.html 文件7.cp mime.types文件到开发板/etc目录8.vi passwd,添加nouser用户,vi group 添加nogroup组8.运行boa:#/bin/boa现在通过其他机器就可以访问了。

bbb://192.168.0.12就可以访问到你放置的那个index页面了。

9.编辑helloworld.c程序测试cgi的运行#arm-linux-gcc -o helloworld.cgi helloworld.c#cp helloworld.cgi 到开发板的/var/www/cgi-bin目录下在pc机的浏览器位置栏输入bbb://192.168.0.12/cgi-bin/helloworld.cgi,可以看到相关页面,CGI脚本测试通过。

基于Boa的嵌入式Web服务器关键技术研究

基于Boa的嵌入式Web服务器关键技术研究
维普资讯
基于 B a o 的嵌入式 We 服务 器关键技术研究 b
宋 扬 马 彪 秦 晓 丽
( 大连理工大学 电子与信息工程学院,辽宁 大连 162) 103
摘 要 :利用 Ba o 构建 了基于 Am—Lnx操作系统的嵌入式 we 服务器 ,并在此基础上深入研 究了动 r i u b
三l 数 J 程 竺竺 据 没 竺 远备
输 l
序 块模 7 霉模出 I l 接块 收 {
j 夕 七
B 嘏 务器 o

应用程序

—— —、—- / 一


1 系统 的总体结构
以 Ie P A 5 处 理器作为硬件平 台 , n l X 25 t 利用 Ba o 技术作为嵌入式服务器的实现途径 , 再采用
m ut 目标 板 上 的/o ehp on 成 hm /t d目录 . 中 12 t 其 9.
18 0 18为 主机 I , 后 运 行 B , 问 dv e 6 ..6 I然 ) a o 访 e c. i
h l ̄ 图 2 t (n m 所示 )说 明 Ba 行成功 . , o运
器带有 M U的 Am—L u 平 台, M r ix n 本嵌 入式 系统
() 定 We 务 器 的 根 目录 路 径 (evr 2指 b服 Sre -
作者简介: 嵌入式系统的开 女, 朱扬 . … _ , ( 8 )发 辽宁沈阳人, 12 9 大连理工大学电子与信息工程学院硕士研究生在读. 研究方向


3 ・ 4
维普资讯
C I 序来 完 成 交互 式 应 用 程 序 的设 计 方 案 , G程 如
图1 所示 .

【IT专家】在嵌入式Linux系统(OK6410)中移植Boa 服务器

【IT专家】在嵌入式Linux系统(OK6410)中移植Boa 服务器

本文由我司收集整编,推荐下载,如有疑问,请与我司联系在嵌入式Linux 系统(OK6410)中移植Boa 服务器2014/06/26 0 OK6410 的Boa 服务器移植:一Boa 的编译1. 从boa 下载Boa 服务器的最新版:boa-0.94.13.tar.gz。

2. 解压:tar xzf boa-0.94.13.tar.gz3. 进入解压后的文件夹boa-0.94.13 内部的src 文件夹,对源文件进行如下修改1 由于arm-linux-gcc 编译器版本过高,对语法的支持有一些改变,因此需要修改compat.h 中的2 #define TIMEZONE_OFFSET(foo) foo##- tm_gmtoff3 为:45 #define TIMEZONE_OFFSET(foo) foo- tm_gmtoff6 不然在编译的时候会提示如下错误:7 util.c: 100: 1: pasting “t” and “- ” does not give a valid preprocessing token make: [util.o] Error1 1 将boa.c 文件225-227 三行的文件注释掉 2 if (setuid(0) != -1) { 3 DIE(”icky Linux kernel bug!”);4 } 5 为 6 /* 7 if (setuid(0) != -1) {8 DIE(”icky Linux kernel bug!”);9 }10 */11 12 ,否则,但以root 权限启动boa 服务器的时候,会出现以下错误:boa.c:226 - icky Linux kernel bug!: 4. 然后生成Makefile:./configure5. 修改生成的Makefile:默认生成的Makefile 针对x86 平台,我们的目标是针对嵌入式平台,因此需要修改编译器.1 更改Makefile 的31 行和32 行:2 CC = gcc3 CPP = gcc -E4 更改为5 CC = arm- linux-gcc6 CPP = arm-linux-gcc -E6. 在当前目录下编译Boa 源文件:make7. 将生成好的boa 可执行文件去掉冗余信息:arm-linux-strip boa. 如下图为strip前后boa 的大小对比。

基于ARM9处理器的嵌入式Boa服务器的网络远程监测实现方案

基于ARM9处理器的嵌入式Boa服务器的网络远程监测实现方案

基于ARM9处理器的嵌入式Boa服务器的网络远程监测实现方案随着高科技技术逐渐融入到传统的农副业,温室培养已成为生产反季节作物的方式。

介绍了基于S3C2410处理器的温室监测控制系统的设计,并设计了一种基于ARM9处理器的嵌入式Boa服务器的网络远程监测实现方案,用户通过以太网对温室内的环境进行监测和一些设备的控制,提高远端机器的安全可靠性。

随着经济的快速发展和科技的进步,人们的生活水平不断提高,对生活质量的要求越来越高,对春茶的需求也大大增加。

使得春茶供不应求,从而提出了温室培养茶树,以缓解人们对春茶的需求。

随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和监控,非常方便实用。

对于温室茶树的培养,需要保持其相对优异的生长环境。

本文通过嵌入式Web服务器将被控设备接入Internet,用户可以通过IE浏览器对监控设备实现远程监测与控制。

1 系统介绍本文设计的温室茶树生长监控系统如图1所示。

系统采用32位的ARM9处理器S3C2410作为主控器,各类传感器将采集到的信号传输给处理器,交由处理器处理,当当前环境变量不符合预先设置的参数时,处理器将进行相应的操作处理。

为了实现远程监控,嵌入式Web服务器通过Linux下的Boa服务器将监控设备接入Internet,用户可以通过IE浏览器对被控设备实现远程监测与控制。

2 系统硬件设计嵌入式Web服务器系统不仅可以进行现场数据的采集、处理与控制,还可以通过PC机上的Web浏览器来访问嵌入式系统上的网页。

在登陆界面需要输入用户名和密码,当用户名和密码正确后方可进入监控界面。

实验七网络服务器 Boa 实验

实验七网络服务器 Boa 实验

实验七网络服务器 Boa 实验一、实验目的学会嵌入式Web 服务器Boa 的移植;学会使用Boa 服务器。

二、实验设备硬件:EduKit-IV 嵌入式教学实验平台、Mini2410 核心子板、PC 机;软件:Windows 2000/NT/XP、Ubuntu 8.04、其他嵌入式软件包。

三、实验内容下载Boa 服务器程序的源码,完成Boa 程序的移植;修改Boa 的配置,使其能够支持CGI 程序的执行;运行和测.Boa 服务器。

实验步骤:下面介绍如何进行BOA 实验(工作目录$WORKDIR 为:/usr/local/src/EduKit-IV/,$SIMPLEDIR 为:$WORKDIR/Mini2410/simple):1)设置环境变量(工作目录$WORKDIR 为:/usr/local/src/EduKit-IV/,$SIMPLEDIR 为:$WORKDIR/Mini2410/simple):$ source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh$ source /usr/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/path.sh2)进入到Madplay 播放器实验目录,并解压相应工具包及库:$ cd $SIMPLEDIR/11.1-boa$ tar zxvf boa-0.94.13.tar.gz3)配置boa 生成Makefile:$ cd boa-0.94.13/src$ ./configure --host=arm-linux --target=arm-linux4)修改源码文件:修改$SIMPLEDIR/11.1-boa/boa-0.94.13/src/Makefile:修改:CC = gccCPP = gcc -ECC = arm-linux-gccCPP = arm-linux-gcc -E修改$SIMPLEDIR/11.1-boa/boa-0.94.13/src/compat.h:修改:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff为:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff修改$SIMPLEDIR/11.1-boa/boa-0.94.13/src/boa.c:修改:if (setuid(0) != -1) {DIE("icky Linux kernel bug!");}为:// if (setuid(0) != -1) {//// }DIE("icky Linux kernel bug!");5)修改完源码文件后输入命令开始编译源码:$ make$ arm-linux-strip boa6)修改boa 配置文件$SIMPLEDIR/11.1-boa/boa-0.94.13/boa.conf:修改:User nobodyGroup nogroup为:User rootGroup root修改:#ServerName .hereServerName 修改:DocumentRoot为:DocumentRoot /www修改:ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/为:ScriptAlias /cgi-bin/ /www/cgi-bin/7)准备BOA 实验必备源码并拷贝到$NFSDIR 目录(实验中将通过ftp 服务加载到实验平台运行的 linux 上)。

嵌入式web server boa在S3C2410上的编译移植步骤

嵌入式web server boa在S3C2410上的编译移植步骤
4.cd boa-0.94.13/src
5. ./configure
二、编译前,修改文件
1.修改Makefile文件,找到CC=gcc和CPP=gcc -E,分别将其改为交叉编译器安装的路径:
CC= arm-softfloat-linux-gnu-gcc
CPP= arm-softfloat-linux-gnu-g++
嵌入式web server boa在S3C2410上的编译移植步骤
开发平台:ubuntu 8.04
目标平台:S3c2410
开发工具:arm交叉工具链版本3.4.5
boa版本:boa-0.94.13.tar.gz
一、下载源码,生成makefile
1.下载源码:
2.拷贝到/opt目录下
3.解压tar zxvf boa-0.94.13.tar.tar
(6)KeepAliveMax 1000
KeepAliveTImeout 10
(7)MimeTypes /etc/mime.types
(8)ScriptAlias /cgi-bin/ /var/www/cgi-bin/
三、编译并移植
1.编译boa
# make
# arm-softfloat-linux-gnu-strip boa
2,将mime.types文件复制目标板根文件系统/etc目录下
3。在开发板上
cd /etc
mkdir boa
把开发机上的(配置文件)boa.conf(编译结果)boa defines.h这3个文件拷贝到开发板/etc/boa/下
4.在开发板上
cd /var
mkdir www (这个文件夹内可以放网页)
}*/
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于BOA的嵌入式WEB SERVER的设计随着网络技术的不断发展,网络现在已无处不在。

Linux最大的好处在于其良好的网络功能,因此在该系统中,我们通过设计WEB 服务器,使用户能通过浏览器访问设备上的Web服务器来远程控制现场设备。

嵌入式Linux下,系统资源是非常有限的,因此我们选择Web服务器时,要考虑到其资源有限的特点;Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。

作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。

但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。

现在,多数嵌入式Linux的代码中已经包含boa的源代码,在嵌入式Linux下实现Boa 只需要对Boa做一些简单的配置和修改。

这主要通过对boa.conf、boa.c、mime.types等文件进行修改来实现。

服务器中主要包括boa和CGI两部分,其中Boa管理着返回客户端的WEB 页面,而CGI控制着客户端和服务器端的信息交换,所以我们可以通过编写相应的CGI程序来实现所需要的功能。

Boa服务器的实现主要分为两步,boa服务器的移植和CGI程序的设计。

1 、boa 服务器移植Boa服务器的移植主要分为以下步骤进行:(1)首先下载boa源代码,网上有很多关于boa的源码下载网站,官方网址为:/;(2)根据目标平台修改boa的配置文件boa.conf,以及相关的源代码文件boa.c,log.c。

(3)执行configure生成Makefile,并修改Makefile中CC和CPP等项,改成与目标平台对应的编译工具;(4)交叉编译源代码,生成可执行文件boa;(5)拷贝配置文件boa.conf和可执行程序boa到文件系统中。

此时就可以在目标板中运行boa程序了。

下面具体介绍一下如何在ARM平台上移植boa服务器:本系统中采用的boa源码是boa-0.94.13.tar.gz, 将下载的源码拷贝到工作目录解压,# tar xzf boa-0.94.13.tar.gz这里注意下系统中需要安装bison,flex等工具,如果在U-BOOT移植中已经在开发主机中安装过这些工具,则可以跳过这一步骤。

如果没有,在UBUNTU系统中使用如下命令就可以自动安装:#sudo apt-get install bison flex如果不安装这些工具,在执行make生成可执行文件时会出现如下错误make: yacc:comman not foundmake: *** [y.tab.c] error 127make: lex:comman not foundmake: *** [lex.yy.c] error 127解压完源代码后,我们进入boa目录,boa的所有源代码及编译文件都放在都放在/src下面,进入该目录#cd /source/boa-0.94.13/src相关文件的修改:此时,我们要做的就是对该目录下一些源代码做相应的修改,首先修改compat.h文件, 打开文件找到下面的语句:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff将其修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff否则会出现错误:util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o]修改log.c源文件,将以下语句注释掉:if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");}否则会出现错误:log.c:73 unable to dup2 the error log:bad file deorboa.c文件的修改:注释掉下面两句话:if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {DIE(”initgroups”);}否则会出现错误:boa.c:211 - getpwuid: No such file or directory注释掉下面语句:if (setuid(0) != -1) {DIE(”icky Linux kernel bug!”);}否则会出现问题:boa.c:228 - icky Linux kernel bug!: No such file or directory生成可执行文件BOA:首先进入src目录,并执行configure文件,生成Makefile文件#cd /source/boa-0.94.13/src#./configure生成完Makefile后,接下来要做的就是对其做相应的修改,因为我们对应的目标平台是ARM,所以我们要查看我们用到的交叉编译器设置是否正确,本实验中所要修改的具体参数为:修改CC =gcc 为CC =arm-softfloat-linux-gnu-gcc修改CPP =gcc -E 为CC =arm-softfloat-linux-gnu-gcc -E在确认以上修改正确后,我们在/src目录下就可以使用make命令来生成我们所需要的可执行文件boa了。

# make此时会在当前目录下生成一个名为boa的可执行文件,可以通过ls命令查看。

#ls -l boa-rwxr-xr-x 1 root root 187213 2009-07-11 13:44 boa可以看到生成的可执行文件有180K,对于嵌入式系统来说,我们要尽可能的缩下其大小,因此,我们可以通过瘦身命令strip来删除其中的多余信息,达到缩下体积的目的。

#arm-softfloat-linux-gnu-strip boa# ls -l boa-rwxr-xr-x 1 root root 61052 2009-07-11 13:49 boa可以看到,boa在瘦身前后的大小差距很大,这对嵌入式系统来说,节省了很大的空间。

Boa的配置在生成好boa以后,还要对boa的配置文件boa.conf做修改,在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。

修改如下:#vi boa.conf(1)Group的修改修改Group nogroup为Group 0(2)user的修改修改User nobody为User 0(3)Alias的修改修改Alias /cgi-bin/ /usr/lib/cgi-bin/为Alias /cgi-bin/ /www/cgi-bin/(5)DoucmentRoot的修改修改DoucmentRoot /var/www为DoucmentRoot /www(6)ServerName的设置修改#ServerName .here为ServerName .here否则会出现错误“gethostbyname::No such file or directory”(7)AccessLog修改修改AccessLog /var/log/boa/access_log为#AccessLog /var/log/boa/access_log否则会出现错误提示:“unable to dup2 the error log: Bad file deor”配置好boa.conf以后,我们将生成的boa以及修改好的boa.conf文件拷贝到文件系统中相应的目录中:首先在目标板上创建目录/etc/boa并且把boa 和boa.conf拷贝到这个目录下mkdir /etc/boa创建HTML文档的主目录/wwwmkdir /www创建CGI脚本所在录/www/cgi-binmkdir /www/cgi-bin以下步骤在ubuntu下进行:将boa.conf拷贝到开发板根文件系统的/etc/boa下#cp boa.conf /source/rootfs/etc/boa将boa拷贝到开发板根文件系统的/etc/boa下#cp src/boa /source/rootfs/etc/boa将ubuntu下/etc/mime.types拷贝到开发板根文件系统的/etc下,mime.types的主要功能是控制从网络上发给宿主机端的媒体文件的类型,并且告诉宿主机怎么去处理这些数据。

#cp /etc/mime.types /source/rootfs_hw/etc这时,我们可以将一个测试网页拷贝到/www目录下,并在开发板上启动boa服务器/etc/boa/boa然后在宿主机下,打开浏览器输入开发板的IP地址,就可以看到存放在开发板中的测试主页了,但此时我们点击页面上的按钮时不会执行任何相应,因为现在只是实现了简单的连接,网页并没有相应的CGI程序。

在boa 服务器的设计中,最为关键的就是CGI程序的设计,通过CGI程序,就可以实现我们点击页面时所需要的功能。

2 、CGI程序设计该系统所要实现的功能是让客户端使用浏览器向服务器发送HTTP请求,服务器响应客户端的请求后,并引导到指定的脚本程序,对命令进行解析,将信息交给后台——CGI去处理。

CGI解析信息后,向远程设备发出控制信息。

设备响应后,返回给CGI控制信息,CGI再将信息解析成变量输出到Web Server上,最后客户端得到WebServer发回的页面消息(HTML),就能得到现场设备的运行状态,实现对现场设备的远程监控。

该系统中设计的BOA服务器的的主要功能如下图所示:图1 系统功能实现流程图CGI的程序编写包括两个部分:HTML代码和C代码;CGI程序与Boa Web服务器之间通过环境变量、命令行参数和标准输入等方式进行通信。

本设计中采用的表单编码信息通过环境变量QUERY_STRING传递。

在编写CGI程序时,需要注意:◆REQUEST_METHOD前面介绍过,请求方法有两种:GET和POST。

在实验中,我选择GET方法,如在showsetip()中的代码:<meta http-equiv=pragma content=no-cache><meta http-equiv=expire content=now><form method=get action=/cgi-bin/config.cgi>◆环境变量在选用不同的方法时,所对应的环境变量也不同。

相关文档
最新文档