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)第一章引言随着计算机技术的发展,嵌入式系统已成为计算机领域的一格重要组成部分。
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的伴侣可能就忽视了这个。
嵌入式Web服务器的实现
嵌入式Web服务器的实现1Boa程序1.1Boa简介boa是最受人喜爱的嵌入式web服务器,功能较为强大,支持认证,cgi等。
Boa 是一个单任务的HTTP SERVER,它不像传统的web服务器那样为每个访问连接开启一个进程,也不会为多个连接开启多个自身的拷贝。
Boa对所有的活动的http连接在内部进行处理,而且只为每个CGI连接(独立的进程)开启新的进程。
因此,boa在同等硬件条件下显示出更快的速度。
测试表明boa在Pentium 300MHZ下能够每秒钟处理几千次点击,在20 MHz 386/SX 下能够每秒钟处理几十次点击访问。
Boa和thttpd等,与apache等高性能的web服务器主要区别是,它们一般是单进程的服务器,只有在完成一个用户请求后才能响应另一个用户的请求,无法并发响应,但这在嵌入式设备的应用场合里已经足够了。
Boa设计主要出于速度和安全,是指不被恶意用户暗中破坏,而不是指它有很好的访问控制和通信加密。
可以添加SSL来保证数据传输中的保密和安全。
1.2Boa的功能、特点1)支持HTTP/1.0(实验性的、有条件的支持HTTP/1.1)1.12)支持CGI/1.1,编程语言除了C语言外,还支持Python, Perl, PHP,但对PHP没有直接支持,没有mod_perl, mod_snake/mod_python等。
3)Boa支持HTTP认证,但不支持多用户认证。
4)它可以配置成SSL/HTTPS和IPv6。
5)支持虚拟主机功能。
Boa服务器与其它服务器的不同:为了追求速度和简单性,boa服务器在一些方面不同于一些流行的web服务器。
1)CGI程序的REMOTE_HOST环境变量没有设置2)Boa不具有ssi(server side includes)3)Boa不具有访问控制4)没有chroot选项1.3Boa的工作原理BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合应用在嵌入式系统中。
江西电信BRAS(华为ME60、MA5200G)配置规范
3.2.2.1 GE 用做上连接口....................................................... 23 3.2.2.2 GE 用做下联接口....................................................... 23 3.2.2.3 GE 拨号下联子接口(dot1Q) .............................................. 24 3.2.2.4 GE 拨号下联子接口(QinQ) ............................................... 24 3.2.2.5 GE 专线下联子接口..................................................... 25 3.2.2.6 接口 uRPF ............................................................ 26 3.2.2.7 hold-time 配置 ......................................................... 26 3.2.2.8 配置范例 ............................................................. 27 3.3 MULTI-VR(CONTEXT)配置 ......................................................................................................... 28
web服务器Boa移植手册
Boa服务器的移植可分成两部分,一个是在x86平台上移植,即在虚拟机的linux下,另一个是 在arm平台上移植,即在开发板上的linux下,本手册的前四步,都是在虚拟机上做移植,第五步 是移植到发开板上。
一、编译 boa 程序
1、下载boa-0.94.13.tar.gz。 2、解压 3、#./configure 4、#make 编译会出错: util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1 解决方法,修改compat.h中的 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 为: #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
3
MimeTypes /etc/mime.types 将网页文件放在/var/www 目录下,cgi 脚本放在/var/www/cgi-bin 目录下。在开发板上运行 boa, 在主机 IE 上输入开发板 IP,可看到网页。
六、常见错误
这些错误内容可查看/var/log/boa/error_log 文件 1、gethostbyname:: No such file or directory 解决办法: 修改 boa.conf 去掉 ServerName .here 前的注释符号(#)。 2、util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 解决办法: 修改 src/compat.h 找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 修改成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 3、boa.c:211 - getpwuid: No such file or directory 解决办法: 修改 src/boa.c 注释掉下面这段程序: if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } 即修改为: #if 0 if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } #endif 4、boa.c:228 - icky Linux kernel bug!: No such file or directory 解决办法: 修改 src/boa.c 注释掉下面语句: if (setuid(0) != -1) { DIE(”icky Linux kernel bug!”);
基于ARM9的Web服务器Boa的软、硬件设计
基于ARM9的Web服务器Boa的软、硬件设计作者:金勇来源:《电子世界》2013年第13期【摘要】文章介绍了基于ARM9的嵌入式Web服务器Boa的软、硬件设计及其实现,硬件部分的核心是三星的S3C2410X处理器。
最后成果形式为可以远程访问的WebServer嵌入式服务器。
Boa是一款单任务的HTTP服务器。
与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接。
而是通过建立HTTP请求列表来处理多路HTTP连接请求。
同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。
同时它还具有自动生成目录、自动解压文件等功能。
因此,Boa在嵌入式系统中具有很高的应用价值。
【关键词】ARM;Linux;嵌入式Web服务器;CGI1.ARM简介广义地讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。
它是嵌入到对象体系中的专用计算机系统,以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
目前非常流行的ARM 内核有ARM7TDM1、StrongARM、ARM720T、ARM9TDM1、ARM920T、ARM940T、ARM946T、ARM966T、ARM10TDM1等。
本文所讨论的目标板的CPU为ARM920T内核的三星S3C2410芯片。
ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。
它包含ARM920T、ARM922T和ARM940T三种类型,广泛应用于PDA、移动通信、路由器、工业控制等领域。
2.嵌入式Web服务器实现原理嵌入式Web服务器是指将Web服务器引入到现场嵌入式设备中,并驻留其中有限的代码空间内。
与传统的Web应用相比,简化了系统结构,并将信息采集和信息发布都集成到现场的嵌入式设备中。
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.安装完成:。
嵌入式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编程开发**⽬录**⼀、环境搭建⼆、相关配置(部分)三、调试运⾏四、测试源码参考五、常见错误六、扩展(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下⾯提供⼏个测试代码,转⾃其他⼤佬,不过我找不到⽹址了。
BOA服务器与CGI程序
新
创 3>.CGI程序
CGI(Common Gateway Interface) 通用网关接口的简称.
风 主要用来处理用户请求,实现用户与服务器之间的交互.
实际上就是一段程序,运行在Server上,提供同客户端 Html页面的接口.
可以用下图来说明:
飓
色
红
服务器提供了客户端(浏览器)和CGI扩展程式之问的信息交换的通道。客户通过浏览器 发出请求,经过服务器的解释发出标准输出传送给CGI,或是说调用CGI程序,CGI对信息 进行处理后,会将结果以标准输出的形式发回,服务器将处理结果以HTML的形式发送给 客户端。 CGI程序可以用多种语言去写,比如Shell Script, C ,VB ,Perl,Fortran等, 但在uClinux下只能用C语言完成. 通常在Web网页中调用CGI程序有三种方法,表单,超链接或是SSI调用. 我们这里主要采用表单的调用方法 .
台 平
3.3 CGI 程序
新
创 由于 CGI 程序是一个外部程序,所以系统要想运行它,
风 首先是 CGI 程序进行编译链接,生成一个可执行文件,存放于 ROMFS 文件夹中,最后与内
核一起生成镜像.
飓 修改位于 /uClinux-dist/user/cgi_generic 下的 CGI 相关程序,
主要修改 cgi.c 和 template.c 下面主要解释其中重要的 C 语句:
风
飓
色
红
Index.html 就是首面,当浏览器访问服务器时,首先显示的页面. 新建一个首页,主要加入可搜集信息的 FORM,则可以根据 FORM 所得到的数据,调用 CGI 程序,实现动态网页的功能. 参考 FORM 表单格式,这个是 Test2 的参考表单:
基于Boa服务器的厨房信息Web监控系统
图2控制端结构框图基于Boa 服务器的厨房信息Web 监控系统叶丹(四川警安职业学院计算机系,四川绵竹618209)Kitchen Information Monitor System Based on Boa Web Server本文设计的一种家用厨房信息Web 监控系统可以通过ARM 嵌入式系统动态Web 技术对家庭厨房的环境信息进行网络远程监控。
该监控系统主要包括信息采集端、控制端、网络传输和监视端四个模块,实现厨房环境信息从前端采集后送入控制端进行处理,再交由网络传输端传输,最后输出到监视端进行远程监控的一整套数字化监控流程。
厨房信息Web 监控系统工作流程示意图如图1所示。
图1系统流程框图1信息采集端设计厨房信息Web 监控系统的前端为信息采集端,用以完成对厨房环境相关信息的采集,包括温度、可燃气体浓度、现场视频信息的采集。
厨房环境是复杂多变的,一些敏感的装置和材料容易因高温或泄漏等不稳定因素引发安全事故,几个关键的监控点集中在灶台、管道、液化气罐、进出口处等。
信息采集端对环境信息的采集主要通过传感器和摄像头完成,采集到的信息送到控制端进行处理。
系统选用无固定装置式铂热电阻WZP-130完成对厨房内灶台上方蒸汽温度、液化气罐或天然气管道表面温度、厨房电线布控集中区域温度等厨房内几个关键部位温度的测量。
WZP-130由感温元件、不锈钢外保护管、接线盒以及各种用途的固定装置组成,可以同时输出两组相同电阻信号供使用。
它是利用铂丝在温度变化时自身电阻也随着变化的特性来测量温度的,不锈钢保护管不但具有抗腐蚀性能,而且具有足够的机械强度,保证铂热电阻能安全地使用在各种场合。
WZP-130测温范围为-200~500℃,热响应时间≤4.5s 。
WZP-130对温度进行测量后实时送入控制端进行处理,不同的部位设定不同的温度监控阈值,若超过设定的阈值则进行远程报警处理,在远程监控端可以接收到报警提示。
厨房里的可燃气体通常是从管道里泄漏出来的天然气或者是液化气,其主要成分为甲烷。
boa服务器的移植
boa服务器的移植boa Web服务器是一个单任务http服务器,源代码开放、性能高。
下载地址:/Cgic库文件:cgic205.tar.gz 。
下载地址:/cgic/交叉编译器版本:arm-none-linux-gnueabi-gcc一、编译配置boa服务器1 、[root@localhost /]#mkdir web//在根目录下创建web目录2 、[root@localhost /]# cd /web/3 、[root@localhost web]# rz4 、[root@localhost web]# tar –zxvf boa-0.94.13.tar.gz//将源码解压到/web目录下5 、[root@localhost web]# cd boa-0.94.13/6 、[root@localhost boa-0.94.13]# cd src/7 、[root@localhost src]# ls8 、[root@localhost src]# ./configure//运行./configure使之生成Makefile文件9 、[root@localhost src]# vi Makefile修改内容如下:把CC=gcc 和CPP=gcc -E改写成CC=arm-none-linux-gnueabi-gccCPP=arm-none-linux-gnueabi-g++ -E10 、[root@localhost src]# vi compat.h在一般模式下输入:set nu显示行编号,再用120进到120行,修改内容如下:120 #define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff改为define TIMEZONE_OFFSET(foo) foo->tm_gmtoff 把120行foo后两个#号去掉11 、[root@localhost src]# make//编译12 、[root@localhost src]# arm-linux-strip boa //优化boa可执行文件(此步非必须)13 、[root@localhost web]# cd boa-0.94.13/14 、[root@localhost boa-0.94.13]# vi boa.conf //修改boa的配置文件在一般模式下输入:set nu显示行编号,再用111进到111行,修改内容如下:把111 DocumentRoot /var/www改为111 DocumentRoot /var/www//指明html文件所放的路径把193 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/改为193 ScriptAlias /cgi-bin/ /var/www/cgi-bin///指明cgi脚本的虚拟路径所对应的实际路径15、将/src目录下新生成的boa文件下载到目标板的/bin目录下,将boa.conf文件下载到目标板的/etc/boa/目录下。
linux下boa服务器搭建
boa是一个小型的web服务器,可以用于多种平台,在嵌入式中比较常见。
boa的官方网站为,可以在上面下载修改文件(1)修改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] 错误1(2)修改src/log.c注释掉if (dup2(error_log, STDERR_FILENO) == -1) {DIE("unable to dup2 the error log");}为:/*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 descriptor(3)修改src/boa.c注释掉下面两句话:if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”);}为#if 0if (passwdbuf == NULL) {DIE(”getpwuid”);}if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”);}#endif否则会出现错误:boa.c:211 - getpwuid: No such file or directory注释掉下面语句:if (setuid(0) != -1) {DIE(”icky Linux kernel bug!”);}为#if 0if (setuid(0) != -1) {DIE(”icky Linux kernel bug!”);}#endif否则会出现问题:boa.c:228 - icky Linux kernel bug!: No such file or directoryBoa的配置在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。
BOA CGI 技术简介
嵌入式Linux操作系统CGI程序设计技术1概述随着互联网应用的普及,越来越多的信息化产品需要接入互联网通过Web页面进行远程访问。
嵌入式Web系统提供了一种经济、实用的互联网嵌入式接入方案。
这里结合一种嵌入式Web Server BOA来介绍嵌入式Linux系统下的CGI程序设计技术。
2Web Server BOA的实现与配置2.1uClinux下,主要有三个Web Server:HTTPD、THTTPD和BOA.HTTPD是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI.THTTPD 和BOA都支持认证、CGI等,功能都比较全。
BOA是一个单任务的小型HTTP服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中。
目前的uClinux的代码中已经包含BOA的源代码。
在uClinux下实现BOA,只需要对BOA做一些配置和修改。
以下是配置的过程。
(1)编译BOA到内核首先,需要把BOA编译到内核,即执行make menuconfig,在应用程序选单中network application项下面选择boa.该操作需要重新编译内核。
(2)编制配置文件boa.conf在Linux操作系统下,应用程序的配置都是以配置文件的形式提供的,一般都是放在目标板/etc/目录下或者/etc/config目录下。
但boa的配置文件boa.cont一般都旋转在目标板/home/httpd/目录下。
例如,一个典型的boa.conf文件格式如下:它指定了HTML页面必须放到/home/httpd目录下,cgi外部扩展程序必须放到/home/httpd/cgi-bin目录下。
(3)编译烧写内核重新编译内核后,通过烧写工具烧写内核,就可以在PC上通过IE浏览器访问开发板上的Web Server.例如,输入开发板的IP地址http://192.168.0.101/,即可访问到自己做的网页index.html了。
四种嵌入式web服务器介绍
mm net security
内存管理代码 网络支持代码,每个子目录对应网络的一个方面 安全、密钥相关的代码
sound usr
document ation scripts
音频设备的驱动程序 用来制作一个压缩的cpio归档文件
内核文档 用于配置、编译内核的脚本文件
内核的源代码可以从获取: 1. 首先解压缩内核源代码,修改顶层的Makefile文件 ARCH?= arm CROSS_COMPILE ?= arm-linux这里需要指定目标平台的体系结构和交叉编译工具链的路径。 2. 修改linux-2.6.26.8/arch/arm/mach-s3c2440/mach-smdk2440.c文件 s3c24xx_init_clocks(16934400)修改为s3c24xx_init_clocks(12000000) 指定开发板的晶振频率为12MHz。
第12章 嵌入式BOA服务器的构建
12.1
概述 嵌入式Linux系统移植 嵌入式Linux的BOA服务器移植
12.2
12.3
12.1 概述
下面简介下嵌入式web服务器。由于嵌入式 设备资源一般都比较有限,并且也不需要能同时 处理很多用户的请求,因此不会使用Linux下最 常用的如Apache等服务器,而需要使用一些专 门为嵌入式设备设计的Web服务器,这些Web 服务器在存贮空间和运行时所占有的内存空间上 都会非常适合于嵌入式应用场合。常见的嵌入式 Web服务器主要有:lighttpd、thttpd、shttpd 和BOA等等。
4.BOA BOA是一个非常小巧的Web服务器,可执行代码只有约60KB。它是 一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进 程来处理并发连接请求。但BOA支持CGI,能够为CGI程序fork出一个进 程来执行。BOA的设计目标是速度和安全,在其站点公布的性能测试中, BOA的性能要好于Apache服务器。
基于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 实验一、实验目的学会嵌入式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 上)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#避免使用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
#文件,则注释掉,如果不使用mime.types文件,则必须使用必须使用必须使用必须使用必须使用必须使用必须使用必须使用必须使用必须使用必须使用必须使用
AddType application/x-httpd-cgi cgi
第三部:Boa的执行 成功配置以后,还需要创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,将静态网页存入该目录下(可以
2、浏览 将helloworld.cgi拷贝至/var/www/cgi-bin/下,浏览器输入
http://192.168.1.107/cgi-bin/helloworld.cgi
系统分类:
嵌入式
| 用户分类: 无分类 | 来源: 转贴 |
mkdir /var/log/boa
mkdir /var/www
cp /cf/boa/index.html /var/www/
cp -r /cf/boa/img /var/www/
mkdir /var/www/cgi-bin
cp /cf/boa/mime.types /etc/
解压:# tar xzf boa-0.94.13.tar.gz
2、生成Makefile文件 直接运行src/configure文件
3、修改Makefile文件 a、 修改 CC = gcc
为 CC = /usr/local/arm/2.95.3/bin/arm-linux-gcc
cp /cf/boa/boa /
./boa &
直接在浏览器中输入
http://192.168.1.107
,出现Red Hat的欢迎网页。静态HTML调试成功。
第四步 CGI脚本测试1、编写Helloworld.c程序
#include
嵌入式Web服务器移植
嵌入式Web服务器移植 《嵌入式Linux系统开发详解——基于EP93XX系列ARM》一书和boa自带的文档等对该内容有比较详细的介绍,但在实验过程中,仍可能会出现一些问题。下面是我在WNC201系统(AT91RM9200)上的移植过程,欢迎讨论。
第一步 Boa程序的移植1、下载Boa源码 下载地址:
int main(void)
{
printf("Content-type: text/html\n\n");
printf("\n");
printf("CGI Output\n");
printf("\n");
printf("Hello,world.\n");
printf("\n");
printf("\n");
exit(0);
}
交叉编译生成helloworld.cgi
# /usr/local/arm/2.95.3/bin/arm-linux-gcc -o helloworld.cgi helloworld.c
将主机 /usr/share/doc/HTML/目录下的index.html文件和img目录复制到/var/www目录下),创建CGI脚本所在录 /var/www/cgi-bin,将cgi的脚本存放
在该目录下。另外还要将mime.types文件复制/etc目录下,通常可以从linux主机的 /etc目录下直接复制即可。
为 ServerName
.here
注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。
4.#指明mime.types文件位置。如果没有以/开始,则表示从服务器的根路径开始。可以注释掉
实际运行时,可以将index.html文件、img目录和mime.types文件放到CF卡目录下,建立目录后,拷贝至相应目录。
制作run.sh
mkdir /etc/boa
cp /cf/boa/boa.conf /etc/boa/
mkdir /var/log