刚做的婚恋网站怎么推广,古镇建设网站,优化网站和网站建设,wordpress图片描述BOA服务器概述
BOA是一款非常小巧的Web服务器#xff0c;源代码开放、性能优秀、支持CGI通用网关接口技术#xff0c;特别适合用在嵌入式系统中。 BOA服务器主要功能是在互联嵌入式设备之间进行信息交互#xff0c;达到通用网络对嵌入式设备进行监控#xff0c;并将反馈信…BOA服务器概述
BOA是一款非常小巧的Web服务器源代码开放、性能优秀、支持CGI通用网关接口技术特别适合用在嵌入式系统中。 BOA服务器主要功能是在互联嵌入式设备之间进行信息交互达到通用网络对嵌入式设备进行监控并将反馈信息自动上传给主控设备的目的。它是基于HTTP超文本传输协议的Web网页是Web服务最基本的传输单元。嵌入式Web服务的工作基于客户机/服务器计算模型由Web浏览器客户机和Web服务器服务器构成也就是著名的B/S结构。运行与客户端的浏览器首先要与嵌入式Web服务器BOA端建立连接打开一个套接字虚拟文件此文件建立标志着socket连接建立成功然后客户端浏览器通过套接字socket以GET或者POST参数传递方式向Web服务器提交请求Web浏览器提交请求后用过HTTP协议传输给Web服务器。Web服务器接到请求后根据请求的不同进行事务处理返回HTML文件或者通过CGI调用外部应用程序返回处理结果。服务器通过CGI与外部应用程序和脚本之间进行交互根据客户端浏览器在请求时所采用的方法服务器会搜集客户端所提供的信息并将该部分信息发送给指定的CGI扩展程序CGI扩展程序进行信息处理并将结果返回给服务器然后服务器对信息进行分析并将结果发送回客户端在浏览器上显示出来。
通用网关接口Common Gateway Interface是一个Web服务器主机提供信息服务的标准接口。通过CGI接口Web服务器就能够获取客户端提交的信息转交给服务器端的CGI程序进行处理最后结果返回给客户端。组成CGI通信的两部分一是HTML页面就是用户浏览器上现实的页面二就是运行在服务器上的CGI程序。
与Apache等高性能的Web服务器的主要区别是Boa是一个单进程服务器适合于嵌入式的单任务http服务器。是一种非常小巧的Web服务器其可执行代码只有大约60KB左右。作为一种单任务Web服务器Boa只能依次完成用户的请求而不会fork出新的进程来处理并发连接请求。但Boa支持CGI能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。
BOA源码下载
官网地址:www.boa.org BOA编译环境准备
将压缩包存放至服务器root目录下并进行解压
tar -xvf boa-0.94.13.tar.gz
安装boa编译
cd boa-0.94.13
sudo apt-get install bison flex BOA /src目录下类库处理
1、修改defines.h文件设置启动服务器时寻找boa.conf配置文件的路径。
/root/boa-0.94.13/src$ pwd
/root/boa-0.94.13/src
/root/boa-0.94.13/src$ vi defines.h 30//修改内容如下 注释30行 添加31行29 #ifndef SERVER_ROOT30 //#define SERVER_ROOT /etc/boa31 #define SERVER_ROOT /root/boa32 #endif2、修改compat.h 文件在 compat.h 文件中的宏定义问题 ‘TIMEZONE_OFFSET’
/root/boa-0.94.13/src$ vi compat.h 120
找到
#define TIMEZONE_OFFSET(foo) foo##-tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)-tm_gmtoff 3、修改boa.c 文件注释掉226-228行这三行注释掉否则 boa 启动时会出现“boa.c:226 - icky linux kernel bug!: No suchfile or directory 错误”
/root/boa-0.94.13/src$vi boa.c 226226 //if (setuid(0) ! -1) {
227 //DIE(icky Linux kernel bug!);
228 //} 4、修改log.c 文件⑴注释掉73-75行这三行注释掉log.c:73 - unable to dup2 the error log: Bad file descriptor⑵config.c 中 使用了 log.c 中声明的变量 但 log.c 中未将这些变量 声明为 extern 类型修改 log.c 31-33 行
//解决log.c:73 - unable to dup2 the error log: Bad file descriptor/root/boa-0.94.13/src$ vi log.c 7373 //if (dup2(error_log, STDERR_FILENO) -1) {
74 //DIE(unable to dup2 the error log);
75 //}//解决multiple definition of cgi_log_name; config.o:/home/slocker/boa-0.94.13/src/config.c:63: first defined here修改 log.c 31-33 行//修改后
31 extern char *error_log_name;
32 extern char *access_log_name;
33 extern char *cgi_log_name; BOA 编译
1、生成Makefile
/root/boa-0.94.13/src$ pwd
/root/boa-0.94.13/src
/root/boa-0.94.13/src$ ./configure
2、编译
/root/boa-0.94.13/src$ pwd
/root/boa-0.94.13/src
/root/boa-0.94.13/src$ make -4j BOA 部署
1、创建BOA服务器目录
/root/boa-0.94.13/src$ mkdir -p ~/boa/bin
/root/boa-0.94.13/src$ mkdir ~/boa/log
/root/boa-0.94.13/src$ mkdir ~/boa/www
/root/boa-0.94.13/src$ mkdir ~/boa/www/cgi-bin
/root/boa-0.94.13/src$
/root/boa-0.94.13/src$ tree ~/boa
/root/boa
├── bin
├── log
└── www└── cgi-bin4 directories, 0 files
/root/boa-0.94.13/src$
2、将可执行文件boa拷贝到/root/boa/bin目录下
/root/boa-0.94.13/src$ pwd
/root/boa-0.94.13/src
/root/boa-0.94.13/src$ cp boa ~/boa/bin/
/root/boa-0.94.13/src
3、将boa.conf拷贝到~/boa/目录下
/root/boa-0.94.13$ pwd
/root/boa-0.94.13
/root/boa-0.94.13$ cp boa.conf ~/boa/
/root/boa-0.94.13
4、修改配置文件boa.conf
/root/boa$ pwd
/root/boa
/root/boa$ vi boa.conf
/root/boa25 Port 8048 #User nobody
49 #Group nogroup
50 User 0
51 Group 064 ErrorLog /root/boa/log/error_log76 AccessLog /root/boa/log/access_log113 DocumentRoot /root/boa/www157 MimeTypes /root/boa/mime.types195 ScriptAlias /cgi-bin/ /root/boa/www/cgi-bin/5、创建log和拷贝mime文件
/root$ cp /etc/mime.types ~/boa
/root/boa/log$ mkdir error_log
/root/boa/log$ mkdir access_log6、创建index.html
/root/boa/www$ mkdir index.html
/root/boa/www$ vi index.html!DOCTYPE html
html langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleBoa Web Server/title
/headbodyh1Boa Web Server/h1
/body/html
7、创建CGI文件 test.c
/root/boa/www/cgi-bin$ mkdir test.c
/root/boa/www/cgi-bin$ vi test.c#include stdio.h
int main()
{ printf(Content-type:text/html\n\n); //这句一定要加上 printf(htmlbody); printf(font style\color:red; font-size:30px;\Hello, CGI!/fontbr/); printf(a href\/index.html\return index.html/a); printf(/body/html); return 0;
} 8、启动服务器
/root/boa/bin$ ./boa
/root/boa/bin$ ps -a | grep boa4490 pts/1 00:00:00 boa
/root/boa/bin$9、测试浏览器输入http://192.168.100.129/