当前位置: 首页 > article >正文

物联网网关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文件中设定)。

<html>
<body>
<h1>Hello E2000-Pi BOA.</h1>
</body>
</html>
  • 启动boa服务器

$sudo boa
  • 浏览器访问

保证你的电脑同开发板是在一个局域网中,相互的ip应可以ping通。
打开电脑中浏览器在地址栏输入开发板的ip,访问成功的显示的网页界面。

常见问题:
无法访问–服务器没有启动。
404 提示–服务器启动,没有对应网页文件。


http://www.kler.cn/a/509888.html

相关文章:

  • Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅
  • 如何通过 Apache Airflow 将数据导入 Elasticsearch
  • Docker部署Redis
  • 力扣9-找出字符串中第一个匹配项的下标
  • 什么是长连接?Netty如何设置进行长连接?
  • 计算机网络-物理层
  • 某国际大型超市电商销售数据分析和可视化
  • Vue进阶之旅:组件通信与高级用法深度剖析(组件通信进阶用法)
  • 大华C++开发面试题及参考答案
  • opencv对直方图的计算和绘制
  • 网络安全行业岗位职责
  • SSM旅游信息管理系统
  • ros 机器人地图转化为gis地图
  • DNS未响应服务问题的解决(电脑连着网但浏览器访问不了网页)
  • C#高级:通过 Assembly 类加载 DLL 和直接引用DLL的方法大全
  • Chromium 132 编译指南 Linux 篇 - 同步第三方库以及 Hooks(六)
  • Python:两数之和
  • 当使用 npm 时,出现 `certificate has expired` 错误通常意味着请求的证书已过期。
  • 【机器学习:二十九、K-means算法:原理与应用】
  • SVM模型(理论知识2)
  • 【C++】如何从源代码编译红色警戒2地图编辑器
  • npm操作大全:从入门到精通
  • QMS检测设备日志采集工具
  • 计算机网络滑动窗口三种协议全解析:原理和应用!!!
  • “AI智慧化服务系统:未来生活的智能管家
  • 数据可视化:让数据讲故事的艺术