2022年嵌入式Web服务器的实现 .pdf

上传人:Che****ry 文档编号:34291028 上传时间:2022-08-15 格式:PDF 页数:5 大小:59.75KB
返回 下载 相关 举报
2022年嵌入式Web服务器的实现 .pdf_第1页
第1页 / 共5页
2022年嵌入式Web服务器的实现 .pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年嵌入式Web服务器的实现 .pdf》由会员分享,可在线阅读,更多相关《2022年嵌入式Web服务器的实现 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、嵌入式 Web 服务器的实现1Boa 程序1.1Boa 简介boa 是最受人喜爱的嵌入式web 服务器,功能较为强大,支持认证,cgi 等。 Boa 是一个单任务的HTTP SERVER,它不像传统的web 服务器那样为每个访问连接开启一个进程,也不会为多个连接开启多个自身的拷贝。Boa 对所有的活动的http 连接在内部进行处理,而且只为每个 CGI连接(独立的进程)开启新的进程。因此,boa 在同等硬件条件下显示出更快的速度。 测试表明 boa 在 Pentium 300MHZ 下能够每秒钟处理几千次点击,在 20 MHz 386/SX下能够每秒钟处理几十次点击访问。Boa 和 thttp

2、d 等,与 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

3、/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通用网关接口名师资料总结 - - -精品资料欢

4、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 技术,特别适合应用在嵌入式系统中。BOA服务器主要功能是在互联嵌入式设备之间进行信息交互,达到通过网络对嵌入式设备进行监控, 并将反馈信息自动上传给主控设备的目的。它是基于 HTTP超文本传输协议的,Web 网页是 Web 服务最基本的传输单元。嵌入式 Web 服务的工作基于客户机服务器计算模型,由Web 浏览器 (客户机 )和 Web 服务器 (服务器 )构成,也即著名的BS结构。运行于客户端的浏览器首先要与嵌入

5、式Web 服务器 BOA端建立连接,打开一个套接字虚拟文件, 此文件建立标志着SOCKET 连接建立成功。 然后客户端浏览器通过套接字SOCKET以 GET或者 POST参数传递方式向Web 服务器提交请求, Web 浏览器提交请求后, 通过 HTTP协议传送给Web 服务器。Web 服务器接到请求后, 根据请求的不同进行事务处理,返回 HTML文件或者通过CGI调用外部应用程序,返回处理结果。 服务器通过CGI与外部应用程序和脚本之间进行交互, 根据客户端浏览器在请求时所采用的方法,服务器会搜集客户所提供的信息,并将该部分信息发送给指定的CGI扩展程序, CGI扩展程序进行信息处理并将结果返

6、回给服务器,然后服务器对信息进行分析,并将结果发送回客户端在浏览器上显示出来。1.4Boa 程序的移植。1) 从 www.boa.org 下载 Boa 源码,当前最新版本为0.94.13 2) 解压并进入源码目录的src 子目录# tar xzf boa-0.94.13.tar.gz # cd boa-0.94.13/src 3) 生成 Makefile 文件# ./configure 4) 修改 Makefile 文件找到 CC=gcc ,将其改成CC = arm-linux-gcc,再找到CPP = gcc E,将其改成CPP = arm-linux-gcc E,并保存退出。5) 修改 c

7、ompat.h 文件#define TIMEZONE_OFFSET(foo) foo#-tm_gmtoff 修改成#define TIMEZONE_OFFSET(foo) (foo)-tm_gmtoff 否则会编译出错6) 编译得到boa 可执行程序运行 make 进行编译,得到的可执行程序为boa,将调试信息剥去,得到的最后程序只有约 60KB 大小。# make # arm-linux-strip boa 1.5Boa 程序的配置1) 建立配置文件boa.conf 在/etc 目录下建立一个boa 目录, 里面放入 Boa 的主要配置文件boa.conf。在 Boa 源码目录下已有一个示例

8、boa.conf,可以在其基础上进行修改,下面解释一下该文件的含义:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - / #监听的端口号,缺省都是80,一般无需修改Port 80 # bind 调用的 IP地址,一般注释掉,表明绑定到INADDR_ANY ,通配于服务器的所有IP地址#Listen 192.68.0.5 #作为哪个用户运行,即它拥有该用户的权限,一般都是nobody,需要 /etc/passwd中有 nobody

9、用户User nobody #作为哪个用户组运行,即它拥有该用户组的权限,一般都是 nogroup, 需要在 /etc/group文件中有nogroup 组Group nogroup #当服务器发生问题时发送报警的email 地址,目前未用,注释掉#ServerAdmin rootlocalhost #错误日志文件。如果没有以/开始,则表示从服务器的根路径开始。如果不需要错误日志,则用 #/dev/null 。在下面设置时,注意一定要建立/var/log/boa目录ErrorLog /var/log/boa/error_log #访问日志文件。如果没有以/开始,则表示从服务器的根路径开始。如果

10、不需要错误日志,则用 #/dev/null 或直接注释掉。在下面设置时,注意一定要建立/var/log/boa目录#AccessLog /var/log/boa/access_log #是否使用本地时间。如果没有注释掉,则使用本地时间。注释掉则使用UTC时间#UseLocaltime #是否记录CGI运行信息,如果没有注释掉,则记录,注释掉则不记录#VerboseCGILogs #服务器名字ServerName #是否启动虚拟主机功能,即设备可以有多个网络接口,每个接口都可以拥有一个虚拟的 Web 服务器。一般注释掉,即不需要启动#VirtualHost #非常重要, HTML 文档的主目录。

11、如果没有以/开始,则表示从服务器的根路径开始。DocumentRoot /var/www #如果收到一个用户请求的话,在用户主目录后再增加的目录名UserDir public_html #HTML 目录索引的文件名,也是没有用户只指明访问目录时返回的文件名DirectoryIndex index.html #当 HTML 目录没有索引文件时,用户只指明访问目录时,boa 会调用该程序生成索引文件然后返回给用户,因为该过程比较慢最好不执行,可以注释掉或者给每个HTML 目录加上#DirectoryIndex 指明的文件#DirectoryMaker /usr/lib/boa/boa_indexe

12、r #如果 DirectoryIndex 不存在, 并且 DirectoryMaker 被注释, 那么就用Boa 自带的索引生成程序来生成目录的索引文件并输出到下面目录,该目录必须是Boa 能读写# DirectoryCache /var/spool/boa/dircache #一个连接所允许的HTTP持续作用请求最大数目,注释或设为0 都将关闭 HTTP持续作用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - KeepAlive

13、Max 1000 #HTTP持续作用中服务器在两次请求之间等待的时间数,以秒为单位, 超时将关闭连接KeepAliveTimeout 10 #指明 mime.types 文件位置。如果没有以/开始,则表示从服务器的根路径开始。可以注释掉避免使用mime.types 文件,此时需要用AddType 在本文件里指明MimeTypes /etc/mime.types #文件扩展名没有或未知的话,使用的缺省MIME 类型DefaultType text/plain #提供 CGI程序的 PATH环境变量值CGIPath /bin:/usr/bin:/usr/local/bin #将文件扩展名和MIME

14、 类型关联起来, 和 mime.types 文件作用一样。 如果用 mime.types文件,则注释掉,如果不使用mime.types 文件,则必须使用#AddType application/x-httpd-cgi cgi #指明文档重定向路径#Redirect /bar http:/elsewhere/feh/bar #为路径加上别名Alias /doc /usr/doc #非常重要,指明CGI脚本的虚拟路径对应的实际路径。一般所有的CGI脚本都要放在实际路径里,用户访问执行时输入站点+虚拟路径 +CGI脚本名ScriptAlias /cgi-bin/ /var/www/cgi-bin/

15、/ 2) 用户可以根据自己需要,对 boa.conf 进行修改, 但必须要保证其他的辅助文件和设置必须和 boa.conf 里的配置相符,不然Boa 就不能正常工作。3) 在上面的例子中,我们还需要创建日志文件所在目录/var/log/boa ,创建HTML 文档的主目录/var/www ,将mime.types文件拷贝到 /etc目录,创建CGI 脚本所在目录/var/www/cgi-bin/。mime.types 文件用来指明不同文件扩展名对应的MIME 类型,一般可以直接从 Linux 主机上拷贝一个,大部分也都是在主机的/etc 目录下。2CGI 程序2.1cgi 下载文件程序#inc

16、lude #include #include #include #include #define MAX_FILE_LEN (1024*30) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - #define DOWNLOAD_FILE_PATH /var/www #define DOWNLOAD_FILE_NAME index.html int main() FILE *fp = NULL; char filebufMAX_FI

17、LE_LEN = 0; char cmd512 = 0; struct stat sb; sprintf(cmd, %s/%s, DOWNLOAD_FILE_PATH, DOWNLOAD_FILE_NAME); stat(cmd, &sb); / 取待下载文件的大小/ 输出 HTTP头信息,输出附加下载文件、文件长度以及内容类型/printf(HTTP/1.0 200 OKn); printf(Content-Disposition:attachment;filename=%srn, DOWNLOAD_FILE_NAME); printf(Content-Length:%drn, sb.st_

18、size); printf(Content-Type:application/octet-streamrn); printf(rn); /printf(Connection: closenn); sprintf(cmd, %s/%s, DOWNLOAD_FILE_PATH, DOWNLOAD_FILE_NAME); if(fp=fopen(cmd, r+b) / 成功打开文件,读取文件内容do int rs = fread(filebuf, 1, sizeof(filebuf), fp); fwrite(filebuf, rs, 1, stdout); while(!feof(fp); fclose(fp); return 1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁