web服务器boa的交叉编译

一、在交叉编译boa我这里啰嗦网上超写了下boa的简介,大家可以不看这个
       boa服务器简介
       BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于 嵌入式系统的单任务的http服务器, 源代码开放、性能高。其 可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理 并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行Boa的设计目标是速度和安全。 CGI在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。即客户端与服务器的接口。比如留言本的工作流程:先由用户在 客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在 客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在 浏览器里将看到“留言结束”的字样。整个过程结束。
 
二、boa的交叉编译
1、下载boa安装包,我用的是boa-0.94.13.tar.gz
2、解压
[root@sheryuan myfile]# tar zxvf boa-0.94.13.tar.gz
3、进入下面的目录
[root@sheryuan myfile]# cd boa-0.94.13/src
4、新建一个安装目录
[root@sheryuan src]# mkdir /usr/local/boa
5、配置
[root@sheryuan src]# ./configure --prefix=/usr/local/boa --host=arm-linux
6、修改Makefile文件
主要修改CC和CPP,CC = arm-linux-gcc、CPP = arm-linux-gcc -E
7、make
make可能会出现一下错误:
util.c: In function 'get_commonlog_time':
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token
make: *** [util.o] Error 1
解决方法:
修改compat.h文件
将下面一行(大概是120行)
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
改为:
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
重新make就会通过编译!
8、打包
把当前文件夹下生成的boa可执行文件和上层目录下的boa.conf配置文件拷贝到/usr/local/boa目录下,这里我们还需要把/etc目录下的mime.types文件拷贝到usr/local/boa目录下,这个是一个类型文件,我没有找到精简的类型文件,就用系统的类型文件代替了,不系统的类型文件肯定会更全面的。这三个文件是我们需要在arm上运行的文件。
还要在boa目录下建立一个web资源文件www,并且复制一个有效的html文件到www文件夹下,如果html文件还有其他的依赖文件,也需要根据路径复制到www文件夹下
[root@sheryuan local]# mkdir boa/www
[root@sheryuan local]# cp index.html boa/www/
[root@sheryuan local]# tar czvf boa-0.94.13.tar.gz boa/*
boa/boa
boa/boa.conf
boa/mime.types
boa/www/
boa/www/index.html
9、将压缩包拷贝到arm环境下
[root@ARM11 local]# tar zxvf boa-0.94.13.tar.gz
将boa.conf文件拷贝到/etc/boa文件夹下,如果/etc文件夹没有boa文件夹就需要新建一个
[root@ARM11 local]# mv boa/boa.conf /etc/boa/
10、修改boa.conf,需要修改的内容如下:

User nobody  改为   User root
Group nogroup  改为   Group root

AccessLog /var/log/boa/access_log  改为  AccessLog /dev/null

#ServerName www.your.org.here  改为  ServerNamewww.your.org.here

DocumentRoot /var/www  改为  DocumentRoot /usr/local/boa/www

MimeTypes /etc/mime.types   MimeTypes /usr/local/boa/mime.types

11、执行boa
[root@ARM11 boa]# cd /usr/local/boa
[root@ARM11 boa]# ./boa
可能会出错:
[root@ARM11 boa]# ./boa
[26/Apr/2000:15:16:44 +0000] boa.c:226 - icky Linux kernel bug!: No such file or directory
如果你出现这种错误就需要重新到虚拟机下修改编译:
在虚拟机boa文件src文件夹下修改boa.c文件 

boa.c文件修改:

                if (setuid(0) != -1) {
                        DIE("icky Linux kernel bug!");
改为:
        #if 0
                if (setuid(0) != -1) {
                        DIE("icky Linux kernel bug!");
                }
        #endif

 重新编译,重复上面的步骤,应该没有问题。
[root@ARM11 boa]# ./boa
[26/Apr/2000:15:26:43 +0000] boa: server version Boa/0.94.13
[26/Apr/2000:15:26:43 +0000] boa: server built Jan 13 2013 at 05:39:13.
[26/Apr/2000:15:26:43 +0000] boa: starting server pid=1046, port 80
12、远程登录web网页
在你的物理机上输入你的htp://arm_ip/index.html看是否有效果,比如我的 http://115.156.196.244/index.html,如果有显示结果,说明boa服务器搭建成功!
 

猜你喜欢

转载自blog.csdn.net/xiaoyangger/article/details/8660372