【Linux WEB】Linux嵌入式WEB服务器(BOA)部署

news2024/11/15 21:29:04

1. 下载boa源码

进入官网下载http://www.boa.org/news.html,版本为0.94.13

2. 交叉编译boa源码

2.1 解压boa源码压缩包
  将下载好的压缩包放入到Ubuntu系统中进行解压

tar -zxvf boa-0.94.13.tar.gz 

2.2 生成并配置Makefile文件
(1)将下载好的压缩包放入到Ubuntu系统中进行解压

cd boa-0.94.13/src #进入boa源码路径
./configure #执行配置程序

(2)修改Makefile文件,配置与目标嵌入式平台适配的编译工具链
  a.找到CC=gcc,将其改成CC = arm-linux-gnueabihf-gcc,
  b.找到CPP = gcc –E,将其改成CPP= arm-linux-gnueabihf-gcc –E, 保存退出。
  PS:这里指定的arm-linux-gnueabihf-gcc与系统环境变量的编译器一致

(3)编辑src下的compat.h和boa.c文件
  a. compat.h
  在compat.h的120行处
  #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 改为
  #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff

  b.boa.c
在225行处注释掉下面语句:

if(setuid(0) != -1) {
DIE(”icky Linux kernel bug!);
}

(4)执行make编译源码
  a. 安装依赖:

sudo apt-get install bison 
sudo apt-get install flex

  b. 执行make

  c. 查看是否生成boa可执行文件,若存在则表示成功

  d. 压缩boa可执行文件

arm-linux-gnueabihf-strip boa #减小可执行文件的大小		
strip boa

3. 修改boa.conf文件

该文件位于boa解压后的第一级文件夹

(1)修改User与Group
  User(48行)默认nobody,改为0
  Group(49行)默认nogroup,改为0

(2)#ServerName www.your.org.here (90行左右) 去掉#

4. 配置目标嵌入式平台运行BOA所需环境

(1)将编译生成的boa可执行程序(在/src目录下)拷贝到开发板的/bin目录下,并添加可执行权限
(2)在开发板/etc目录下建boa目录,将boa.conf拷贝到板子的/etc/boa目录。并添加读写权限
(3)创建错误记录日志文件所在目录/var/log/boa/error_log,
  创建访问记录日志文件所在目录/var/log/boa/access_log,
  创建HTML文档的主目录/var/www,
  创建CGI脚本所在目录/var/www/cgi-bin/,
  在/var/www中放置一个index.html文件。
PS:上述目录若不存在,均需手动创建,这些都是boa运行需要的目录。index.html就是打开网址时的网页。
(4)将虚拟机/etc目录下的mime.types文件到开发板/etc目录。

5. 运行boa

  执行./boa运行程序。

./boa

PS:如果中途出现报错,按照以下出现的情况进行解决 。
(1)执行报错1:Could not chdir to “/etc/boa”: aborting
  解决:创建/etc/boa目录
  可修改boa目标路径,关于该目录的定义在src/defines.h中。执行make clean清理,重新执行make编译boa

(2)执行报错2:Could not open boa.conf for reading.
  解决:拷贝boa-0.94.13/boa.conf文件到/etc/boa目录下。

(3)执行报错3:[14/Jan/2021:03:19:55 +0000] log.c:73 - unable to dup2 the error log: Bad file descriptor
在这里插入图片描述

  解决方案a:在系统中创建log文件夹,文件夹路径和文件参考boa.conf中的设置。
  解决方案b
  找到log.c中此处代码位置,将出错代码注释掉。
在这里插入图片描述

(4)执行报错4:Cannot open /var/log/boa/access_log for logging: logfile open: No such file or directory
  解决:在/var/log/ 下建立boa文件夹,并创建acccess_log文件和error_log文件 或 修改boa.confg中的设置。

  最后查看boa进程是否在后台运行

ps -ef |grep boa

在这里插入图片描述

6. 网页测试

PC与嵌入式z目标平台同处于一个局域网,在PC浏览器地址栏输入嵌入式平台的IP地址,即可打开网页。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

交换机常用的贴片网络变压器,滤波器H5084NL / H82409S

华强盛电子导读千兆交换机: 199/2643/0038 在交换机行业中,常用的贴片网络变压器和滤波器型号会根据具体的应用需求、性能指标、成本考量等因素而有所不同。通常,这些器件需要满足网络通信中的高频传输、阻抗匹配、信号隔离、电磁兼容&…

【C++】vector 的模拟实现

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

⌈ 传知代码 ⌋ CNN实现脑电信号的情感识别

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

怎么压缩ppt文件?4个常用的PPT压缩技巧分享!

在当今数字化的工作和学习环境中,PPT已经成为我们表达观点、展示成果的重要工具。然而,有时PPT文件的体积过大,给我们的分享和存储带来了诸多不便,表现在:无端占用宝贵的磁盘空间,接收下载耗费时间长等。 …

KSV1(KSU1)/KSV5(KSU5)-创建分配(分摊)规则/运行分配

将A成本中心费用分摊给B、C两个成本中心: 将B、C两个成本中心建一个成本中心组KSV1-创建分配规则 选择发送方的成本中心,选择接收方的成本中心 给不同成本中心分配比例。 点击保存 点击概览可以看到该条规则,可以在系统中创建多条规则。 K…

优阅达携手 HubSpot 助力出海企业营销、销售和服务自动化

2024 年 6 月 17 - 18 日,GTC 2024 全球流量大会在深圳福田会展中心圆满举办。作为跨境出海行业产业链最全、资源最丰富、规模最大的专业展会之一,本次大会聚集了近 3 万名从业者、超过 200 家海内外优质开发厂商,品牌方、服务商,…

【海贼王航海日志:前端技术探索】CSS你了解多少?(二)

目录 1 -> 字体属性 1.1 -> 设置字体 1.2 -> 字体大小 1.3 -> 字体粗细 1.4 -> 文字样式 2 -> 文本属性 2.1 -> 文本颜色 2.1.1 -> 认识RGB 2.1.2 -> 设置文本颜色 2.2 -> 文本对齐 2.3 -> 文本装饰 2.4 -> 文本缩进 2.5 -&g…

Go开发后端和Vue3开发前端的前后端分离框架中自己手戳一个OA流程审批、工作流引擎给新时代一个漂亮便捷的工作流引擎

前言 在软件项目开发中,我们都会接触到流程审批的需要业务,我们以往用的最多就是如下图这种流程编辑引擎插件: 以上截图中的流程工具是不是大家常见的呀!感觉很丑拿不出手呀!在当前行业内卷及竞争激烈情况下&#xff…

uniapp免费申请苹果证书教程每次7天可用于测试

准备一个苹果账号没有加入过任何组织的 然后下载appuploader下载链接 登录上去切记勾选上未付苹果688 然后点击苹果证书创建p12证书 创建描述文件 uniapp打包自定义基座 这就打包好了可以愉快地开发了,但每次生成只有7天,设备限制3个&#xff0c…

【C++】STL | priority_queue 堆(优先级队列)详解(使用+底层实现)、仿函数的引入、容器适配器的使用

目录 前言 总代码 堆的简介 仿函数 堆的基础框架建立size、empty、top、 向上调整法 and push 向上调整 push 向下调整法 and pop 向下调整法 pop 迭代器区间初始化(构造) 逻辑讲解 为何选择向下建堆? 建堆代码实现 结语 前言…

区块链的搭建和运维4

区块链的搭建和运维4 (1) 搭建基于MySQL分布式存储的区块链 1.构建单群组网络节点 使用开发部署工具构建单群组网络节点,命令如下: bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,85452. 启动 MySQL 并设置账户密码 输入如下命令,…

【mysql 第一篇章】系统和数据库的交互方法

一、宏观的查看系统怎么和数据库交互 在我们刚刚接触系统和数据库的时候不明白其中的原理,只知道系统和数据库是需要交互的。所以我们会理解成上图的形式。 二、MYSQL 驱动 随着我们的学习时间的加长以及对程序的了解,发现链接数据库是需要有别的工具辅…

免费【2024】springboot 高校毕业生信息管理系统的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

安卓Termux系统设备安装内网穿透工具实现远程使用SFTP传输文件

文章目录 前言1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 前言 本教程主要介绍如何在安卓 Termux 系统中使用 SFTP 文件传输,并结合cpolar内网穿透工具生成公网地址,轻松实现无公网IP环境远程传输&#xf…

用 echarts 开发地图、点击展示自定义信息框

1、下载所需地市的json 链接&#xff1a;DataV.GeoAtlas地理小工具系列 在右侧输入需要的名称&#xff0c;然后下载json文件到本地 2、在html 中准备容器&#xff0c;并设置宽高 <div id"mapContent"> <div ref"mapChart" style"width:10…

全网详解LVS的四种工作模式及案例

目录 LVS&#xff08;Linux virual server&#xff09; 一、集群和分布式的简介 二、LVS的运行原理 1、LVS简介 2、LVS 相关术语 3、LVS的集群类型 三、LVS-NAT工作模式 部署NAT工作模式案例&#xff1a; 1、实验环境 2、实验环境说明 3、配置 四、LVS-DR工作模式 …

Http:八股

1、Https加密方式 1.1Https通过 摘要算法保证数据的完整性&#xff0c; 1、服务器将公钥注册到CA&#xff0c; CA用自己的私钥给 服务器的公钥进行数字签名。 2、客户端拿到服务器证书后&#xff0c;用CA的公钥确认数字证书的真实性。 3、获取服务器的公钥&#xff0c;使用它对…

SpringBoot Actuator

对应用进行观测,监控,预警 健康状况[组件状态,存活状态] health 健康端点:返回存活,死亡. Health对象 运行指标[CPU,内存,垃圾回收,吞吐量,响应成功率] Metrics 指标监控端点:访问次数/率等等 链路追踪等等 引入web和actuator依赖 在…

如何在不丢失数据的情况下绕过IPhone密码?

不幸的是&#xff0c;不可能在不丢失数据的情况下绕过 iPhone 密码。通过密码的唯一方法是使用iTunes或iCloud恢复设备。这将清除您设备的内容&#xff0c;因此请务必在恢复之前备份所有重要数据。如果您忘记了密码&#xff0c;请按照以下步骤操作&#xff1a; 1. 将您的 iPhon…

AI绘画 Stable Diffusion后期处理—无需ControlNet也能轻松高清放大图像与老旧照片修复,SD新手必看教程

大家好&#xff0c;我是设计师阿威 分享了这么多期AI绘画Stable DIffusion的入门教程和一些常用的插件玩法后&#xff0c;不知道大家有没有发现&#xff0c;SD还有一个功能&#xff0c;似乎没怎么用到过&#xff0c;它就是—后期处理。 今天就给大家分享一下SD中的 “后期处理…