IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> BOA服务器的移植 -> 正文阅读

[系统运维]BOA服务器的移植

概述

BOA是一种非常小巧的web服务器,用来负责处理客户端或者是浏览器端的http请求,因为其特性小巧,性能优秀,故而适合应用于嵌入式系统。
https://img-home.csdnimg.cn/images/20220524100510.png#pic_center

BOA简介

其可执行代码只有大约60KB左右,Boa是一个单任务的HTTP服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。Boa支持CGI。
Boa的设计目标是速度和安全。(CGI只是一个进程,用来提供接口),自动目录生成和自动文件枪支进行拼接。
Boa的主要设计目标是速度和安全性。安全性在“不能被恶意用户破坏”的意义上,不是“细粒度访问控制和加密通信”。

特点:可靠性和可移植性,Boa不是作为功能强大的服务器。
开发平台:GNU / Linux是目前的开发平台。

BOA移植过程

  1. 下载boa源码,本文使用的是
1.进入boa官网下载
http://www.boa.org/ 

2.CSDN直接下载
https://download.csdn.net/download/qq_42368385/86267519
  1. 解压文件,并进入./boa-0.94.13/src目录
cd ./boa-0.94.13/src/
  1. 执行./configure配置编译环境
linux@linux:~/boa-0.94.13/src$ ./configure
  1. make编译源码
linux@linux:~/boa-0.94.13/src$ make

make编译会出现错误:
compat.h:120:30: note: in definition of macro ‘TIMEZONE_OFFSET’
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
^
make: *** [util.o] Error 1

解决方法:
(1)修改compat.h 的第120行代码
(2)修改boa.c 的第225行代码

linux@linux:~/boa-0.94.13/src$ vim compat.h +120
将
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff        
改成:
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff     

linux@linux:~/boa-0.94.13/src$ vim boa.c +225
将这几行代码注释掉:
 if (setuid(0) != -1) {
 	DIE("icky Linux kernel bug!");
 }
 改为:
 #if 0     //注释掉
	if (setuid(0) != -1) {
 		DIE("icky Linux kernel bug!");
	}
#endif 
清楚一下刚刚编译生成的文件,重新编译
linux@linux:~/boa-0.94.13/src$ make clean
linux@linux:~/boa-0.94.13/src$ make

5.创建boa安装目录 /boa

mkdir -p /home/linux/boa /home/linux/boa/www /home/linux/boa/cgi-bin /home/linux/boa/log

6.复制前面编译生成的boa 文件到创建的boa文件夹下,修改boa-0.94.13文件夹下的defines.h文件中的SERVER_ROOT,使其指向前面创建的文件路径

linux@linux:~/boa-0.94.13/src$ sudo cp boa /home/linux/boa/

linux@linux:~/boa-0.94.13/src$ vi defines.h +30
将第30行:
#define SERVER_ROOT "/etc/boa"
指定的路径改为前面创建的文件路径:
#define SERVER_ROOT "/home/linux/boa"

7.复制必要的文件到安装目录

linux@linux:~/boa-0.94.13/src$ cp boa /home/linux/boa/
linux@linux:~/boa-0.94.13/src$ cp boa_indexer /home/linux/boa/
linux@linux:~/boa-0.94.13/src$ cp /etc/mime.types /home/linux/boa/
linux@linux:~/boa-0.94.13/src$ cd ..
linux@linux:~/boa-0.94.13$ cp boa.conf /home/linux/boa/

8.修改boa配置文件

linux@linux:~/boa$ ls
boa  boa.conf  boa_indexer  cgi-bin  log  mime.types  www
linux@linux:~/boa$ cp boa.conf boa.conf.back
linux@linux:~/boa$ cat boa.conf.back | grep -v "#" | grep -v "^$" > boa.conf
linux@linux:~/boa$ vim boa.conf
将内容改为:

Port 80
User 0
Group 0
ErrorLog /home/linux/boa/log/error_log
AccessLog /home/linux/boa/log/access_log
DocumentRoot /home/linux/boa/www
UserDir public_html
DirectoryIndex index.html
DirectoryMaker /home/linux/boa/boa_indexer
KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /home/linux/boa/mime.types
DefaultType text/plain
CGIPath /bin:/usr/bin:/usr/local/bin
Alias /doc /usr/doc
ScriptAlias /cgi-bin/ /home/linux/boa/cgi-bin/

9.index.html页面的实现

linux@linux:~/boa$ cd www/
linux@linux:~/boa/www$ vi index.html

在index.html中添加以下内容

<html>
        <body>
                <h3>this is a test!</h3><br/>
                        <img src="image.jpg"/>
                <h3>tree picture</h3><br/>
 
                <a href="/cgi-bin/test.cgi">to cgi page</a>
        </body>
</html>

找一张图片放到与index.html的同级目录下

10.测试用的test.cgi生成

linux@linux:~/boa$ cd cgi-bin/
linux@linux:~/boa/cgi-bin$ vi test.c

添加以下内容:

#include <stdio.h>  
int main()  
{  
	printf("Content-type:text/html\n\n"); //这句一定要加上  
	printf("<html><body>");  
	printf("<font style=\"color:red; font-size:30px;\">Hello, CGI!</font><br/>");  
	printf("<a href=\"/index.html\">return index.html</a>");  
	printf("</body></html>");  
	return 0;  
} 

编译生成test.cgi

linux@linux:~/boa/cgi-bin$ gcc -o test.cgi test.c
linux@linux:~/boa/cgi-bin$ ls
test.c  test.cgi

11.查看目录

linux@linux:~/boa$ tree
.
├── boa
├── boa.conf
├── boa.conf.back
├── boa_indexer
├── cgi-bin
│   ├── test.c
│   └── test.cgi
├── log
├── mime.types
└── www
    ├── core
    ├── image.jpg
    └── index.html
3 directories, 10 files

12.验证效果

linux@linux:~/boa$ ./boa

然后打开浏览器输入127.0.0.1进行回环测试
就会出现这样的效果
在这里插入图片描述

注意:如果出现其他错误,确认路径有没有问题,出现make,拷贝boa文件过来

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:16:52  更:2022-08-06 11:17:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 23:55:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码