物联网网关Web服务器--Boa服务器移植与测试

1、Boa服务器介绍

BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。

Boa 嵌入式 web 服务器的官方网站是http://www.boa.org/。

特点

  • 轻量级:Boa 占用的系统资源极少,可在资源有限的嵌入式设备上高效运行,如路由器、智能家居设备等。

  • 开源:其源代码开放,便于开发者根据自身需求进行定制和优化,降低开发成本。

  • 简单易用:配置文件简单直观,易于理解和修改,降低了服务器的部署和管理难度。

  • 支持 CGI:支持通用网关接口(CGI),允许服务器与外部程序交互,实现动态网页功能。

工作原理

  • 网络连接处理:Boa 服务器监听指定的端口,等待客户端的连接请求。当有客户端发起连接时,服务器接受连接,并为该连接创建一个新的进程或线程来处理客户端的请求。

  • 请求解析:服务器接收客户端发送的 HTTP 请求,对请求进行解析,包括请求的方法(如 GET、POST 等)、请求的资源路径、请求头信息等。

  • 资源处理:根据请求的资源路径,服务器在文件系统中查找对应的资源文件。如果请求的是静态资源,如 HTML 文件、图片、CSS 文件等,服务器直接将该资源文件读取并发送给客户端。如果请求的是动态资源,如 CGI 脚本,服务器会调用相应的 CGI 程序来处理请求,并将 CGI 程序的输出结果发送给客户端。

  • 响应生成与发送:服务器根据请求的处理结果,生成 HTTP 响应消息,包括响应状态码、响应头信息和响应体。然后将响应消息发送给客户端,关闭连接。

应用场景

  • 智能家居控制:智能家居设备可以通过 Boa 服务器提供 Web 界面,用户通过浏览器即可方便地控制家电设备、查看环境数据等。

  • 工业自动化监控:在工业自动化领域,Boa 服务器可以用于搭建监控系统,实现对生产设备的远程监控和管理。

  • 物联网设备管理:物联网设备通常需要与云端或其他设备进行通信和交互,Boa 服务器可以作为设备的本地 Web 服务器,提供设备管理和配置的接口。

2、Boa服务器的编译

从www.boa.org下载Boa源码,当前最新版本为0.94.13,将其解压并进入源码目录的src子目录。

复制代码
tar xzf boa-0.94.13.tar.gz

通过配置命令生成Makefile文件, 然后运行make进行编译,得到的可执行程序为boa。

复制代码
//飞腾派OS系统编译boa服务器时会报缺少yacc、lex工具,通过下述命令安装
sudo apt-get install bison
sudo apt-get install flex
./configure
make

编译错误

复制代码
将src下boa.c的第226行注释掉,重新编译下载即可。

225	if(setuid(0) != -1) {
226	//	DIE("icky Linux kernel bug!");
227	}
复制代码
修改compat.h中的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
为:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
复制代码
修改config.c中相关变量定义前加上extren
extern char *error_log_name;
extern char *access_log_name;
extern char *cgi_log_name; 

编译成功后会生成boa的可执行文件,可以当前目录通过sudo ./boa命令执行,或复制到/sbin目录通过sudo boa执行。

3、Boa服务器的配置

boa启动时需要一个配置文件boa.conf,该文件的缺省目录目录是:/etc/boa/,需要从源码目录中复制到/etc目录下。

复制代码
$sudo mkdir /etc/boa
$sudo cp boa-0.94.13/boa.conf /etc/boa/
$sudo vim /etc/boa/boa.conf

(配置的时候,配置文件的目录可根据自己的情况设置路径,主要考虑到可写问题)

boa启动时需要一个配置文件boa.conf,该文件的缺省目录由src/defines.h文件的SERVER_ROOT定义,或者在启动boa的时候通过参数"-c"指定。其中指定的默认目录是:/etc/boa/

  1. 建立/etc/boa目录, 并复制boa.conf到/etc/boa目录下,并按照以下步骤进行修改。

  2. 修改访问权限:修改User nobody 为 User 0 ; 修改Group nogroup 为 Group 0

  3. 设定日志目录:boa日志有两部分,Errorlog 和 AccessLog一般情况下为/var/log/boa/error_log 和 /var/log/boa/access_log两个文件。所以根据自己的情况情况设置日志目录:

ErrorLog /var/log/boa/error_log

AccessLog /var/log/boa/access_log

(注意:这里/var/log/boa目录必须为可写,否则会出项错误:log.c:73 -- Unable to dup2 the error log: Bad file r.)

复制代码
//修订访问权限
User 0
Group 0
//修改html文件在开发板的存放目录
DocumentRoot /home/user/boa_test/www/
//修改cgi文件在开发板的存放目录
ScriptAlias /cgi-bin/ /home/user/boa_test/www/cgi-bin/
  • 开发板目录与文件设置

    //创建boa日志目录与相关文件
    sudo mkdir /var/log/boa sudo touch /var/log/boa/error_log
    sudo touch /var/log/boa/access_log //设置可读写权限 sudo chmod 666 /var/log/boa/*

4、Boa服务器使用

  • WEB服务器首页文件index.html

    写一个最简单的index.html文件,放在/home/user/boa_test/www/目录下(boa.conf文件中设定)。

    Hello E2000-Pi BOA.

  • 启动boa服务器

    $sudo boa

  • 浏览器访问

保证你的电脑同开发板是在一个局域网中,相互的ip应可以ping通。

打开电脑中浏览器在地址栏输入开发板的ip,访问成功的显示的网页界面。

常见问题:

无法访问--服务器没有启动。

404 提示--服务器启动,没有对应网页文件。

相关推荐
杰克说说说7 小时前
物联网消息协议MQTT详解
物联网
Steelenwang8 小时前
基于XT960的泵站监控方案
嵌入式硬件·物联网·硬件工程·智慧城市·智能硬件
华普微HOPERF9 小时前
BLE信道探测方案,开启物联网设备的“距离感知”时代
人工智能·物联网
芯岭技术11 小时前
XL2400T收发芯片,2.4G无线荧光棒控光解决方案,+PA距离可达700M
单片机·嵌入式硬件·物联网
Fibocom广和通12 小时前
KES 2026|广和通LE270-KR获韩国KC认证并通过KT准入,助力智能电表等IoT应用落地
物联网
乐讯通物联网服务商12 小时前
LNG 运输船的船岸一体化通信:蜂窝物联网卡在近岸场景里解决了什么
物联网·物联网卡·lng 运输船
右手吉他12 小时前
高通平台IA APN问题分析之二
android·物联网
乐讯通物联网服务商13 小时前
LTE 在物联网中的定位:Cat.1 / Cat.4 / Cat.M1 / NB-IoT 怎么选,物联网卡又该怎么配?
物联网·架构·物联网卡
Hespethorn13 小时前
MQTT 的四个工程暗礁:遗嘱、保留消息、ACL 与主题设计
后端·物联网
Chery114014 小时前
BLE + Wi-Fi双模智能家居方案:ESP32-C3FH4&ESP32-C5HF4芯片选型指南
物联网·ai·智能家居