当前位置: 首页 > 科技观察

10分钟教你搭建一个嵌入式web服务器

时间:2023-03-13 03:55:19 科技观察

大家好,我是ZhengN,这次我将在10分钟内教大家如何使用开发板搭建一个web服务器。之前分享的文章:常见的嵌入式web服务器有哪些?几个可以在嵌入式中使用的网络服务器是共享的。嵌入式Web服务器是将Web服务器移植到嵌入式系统中的服务器。它仍然基于http文本协议进行通信,具有标准的接口形式。对于客户端来说,访问嵌入式Web服务器与访问普通的Web服务是一样的。在实际工作中,我们也在板子上搭建了一个web服务器,这给我们调试带来了一些方便。我们可以通过网页与看板进行交互。当没有显示屏时,该板也可以作为显示功能的解决方案。Web服务器—boa本文演示如何将boa移植到开发板上。boa是一个只有70KB可执行代码的小型Web服务器,占用系统资源少,快速安全。boa官网:www.boa.org下载版本:boa-0.94.13.tar.gzBoa交叉编译下载得到boa-0.94.13.tar.gz,解压后进入boa-0.94.13/src目录下,执行以下命令GeneratetheMakefile:./configure修改Makefile并设置交叉编译器。找到CC和CPP变量修改为:CC=arm-linux-gnueabihf-gccCPP=arm-linux-gnueabihf-gcc-E执行make编译。编译报错如:arm-linux-gnueabihf-gcc-g-O2-pipe-Wall-I.-c-oresponse.oresponse.carm-linux-gnueabihf-gcc-g-O2-pipe-Wall-I.-c-oselect.oselect.carm-linux-gnueabihf-gcc-g-O2-pipe-Wall-I.-c-osignals.osignals.carm-linux-gnueabihf-gcc-g-O2-pipe-Wall-I.-c-outil.outil.cInfileincludedfromboa.h:50:0,fromutil.c:26:util.c:Infunction'get_commonlog_time':util.c:100:39:error:pasting"t"and"->"doesnotgiveavalidpreprocessingtokentime_offset=TIMEZONE_OFFSET(t);^compat.h:120:30:note:indefinitionofmacro'TIMEZONE_OFFSET'#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff^~~:recipefortarget'util.o'使compat.h失败file:#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff改为:#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff重新编译,如果可以编译,则在当前路径生成boa可执行文件:boaconfigurationputsUbuntu的/etc目录下面的mime.types文件,转移到开发板的/etc目录下。注意:这是MIME(MultipurposeInternetMailExtensions),这是Web服务器支持的规范。在开发板的/etc目录下创建一个boa文件夹(用于存放boa的配置文件和日志文件):cd/etcmkdirboa在开发板的根目录下创建一个www文件夹,在其下创建一个文件夹cgi-bin目录www目录(用于存放后面的页面和交互代码):mkdir-p/www/cgi-bin将boa-0.94.13目录下的boa.conf文件转移到开发板的/etc/boa目录下。scpboa.confroot@192.168.1.10:/etc/boa将boa可执行程序转移到开发板的bin目录下。scpboaroot@192.168.1.10:/bin在开发板/etc目录下创建组文件:cd/etctouchgroup用vi编辑器打开开发板/etc/boa目录下的boa.conf文件。需要做如下修改:①把里面的Groupnogroup改成Group0。②ErrorLog和AccessLog这两行,指定日志文件的路径,将日志保存到/etc/boa目录下,修改如下:ErrorLog/etc/boa/error_log#PleaseNOTE:Sendingthelogstoapipe('|'),如下所示,#issomewhatexperimentalandmightfailunderheavyload.#"Usuallibcimplementsofprintfwillinstallthewhole#processiftherecivingendofapistopsreading."#ErrorLog"|/usr/sbin/cronolog--symlink=/var/log/boa/error_log/var/log/boa/error-%Y%m%d。log"#AccessLog:Thelocationoftheaccesslogfile.Ifthisdoesnot#startwith/,itisconsideredrelativetotheserverroot.#Commentoutorsetto/dev/null(lesseffective)todisable#Accesslogging.AccessLog/etc/boa/access_log③将#ServerNamewww.your.org.here行更改为ServerNamewww。你的。org.here:#ServerName:thenameofthisserverthatshouldbesentbackto#clientsifdifferentthathatreturnedbygethostname+gethostbynameServerNamewww.your.org.here④然后找到DocumentRoot/var/www这一行,改成DocumentRoot/www:DocumentRoot/www⑤然后找到ScriptAlias/cgi-bin//usr/lib/中的cgi-bin/行改为ScriptAlias/cgi-bin//www/cgi-bin/:ScriptAlias/cgi-bin//www/cgi-bin/以上是boa.conf配置文件中需要修改的地方。最后进入我们之前创建的www目录,然后使用viindex.html命令创建一个index.html网页文件进行测试,可以在网上搜索一些简单网页设计的教程。这里我们设计一个简单的网页如:boaservertest嵌入式大杂烩

正N

本公众号专注于嵌入式技术,包括但不限于C/C++、嵌入式、物联网、Linux。

保存并退出index.html。至此,我们的web服务器就基本搭建好了,服务器上有一个简单的网页文件index.html。我们来做个简单的测试:在我们的开发板上输入boa命令启动web服务器。输入以下命令查看boa程序是否启动成功:ps-e|grep"boa"boa进程启动成功后,在浏览器中输入我们开发板的IP地址,访问index.html网页:可见,我们可以通过浏览器访问我们使用开发板搭建的web服务器上的网页,说明我们已经成功在开发板上搭建了一个基于boa的web服务器。本文简单演示了如何打通开发板的web服务器环境,并设计了一个简单的网页。后面我们会继续探索如何通过网页与我们的开发板进行交互,比如:通过网页点亮开发板上的LED,打开开发板上的一些数据传输到网页上进行显示以及其他内容。本文转载自微信公众号“嵌入式大杂烩”,可通过以下二维码关注。转载本文请联系嵌入式大杂烩公众号。