全部博文(1493)
分类: LINUX
2013-04-15 09:06:07
原文地址:嵌入式Linux下web服务器构建 作者:GentleHacker
Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。
首先下载boa源码包,下载链接:。
解压到特定目录,本人使用的是/opt目录,使用命令:
# tar zxvf boa-0.94.13.tar.gz –C /opt
配置boa:
切换到目录# cd /opt/boa-0.94.13/src 运行./configure
会在boa-0.94.13/src目录下生成Makefile文件,修改该文件,主要是修改编译器的选择,从而适合ARM。修改31、32行如下(具体要看你的交叉编译器在哪个目录下面):
CC = /opt/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-gcc
CPP = /opt/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-g++ -E
接着修改src/boa.c文件:
注释掉225到227行的内容:
// if (setuid(0) != -1) {
// DIE (“icky Linux kernel bug!”);
// }
修改src/compat.h文件如下:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
最后编译并且优化:
在src目录下,直接输入make命令即可完成编译,输入ls –l boa,可到如下图所示结果:
表明成功生成了二进制文件
接下来为二进制文件瘦身!!输入arm-linux-strip boa即可,运行结果如下图所示。
相比上一个,明显小了很多了。
二、移植cgic
首先下载cgic库,地址为:。解压到/opt目录
# tar zxvf cigc205.tar.gz –C /opt
切换到cgic目录下,并修改Makefile文件,修改如下所示:
在开始出修改
CC=/opt/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-gcc
AR=/opt/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-ar
RANLIB=/opt/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-ranlib
此外还需修改22行和25行如下:
$(CC) $(CFLAGS) cgictest.o –o cgictest.cgi ${LIBS}
$(CC) $(CFLAGS) capture.o –o capture ${LIBS}
输入make命令进行编译。编译生成capture的可执行文件和次使用的cgictest.cgi文件
优化输入arm-linux-strip capture即可。
三、配置WEB服务器
3.1 在文件系统中配置boa
可以直接打开/opt/boa-0.94.13/boa.conf进行修改,主要修改一下几个参数的配置。
Port 80 使用默认的即可
Listen 192.168.1.6 这个使用自己ARM板子的IP地址
User root 板子使用者
Group root 作为哪个用户运行,即它拥有该用户组的权限,一般是root需要在/etc/group文件中有root组
ErrorLog /dev/console 错误日志文件。如果没有以/XXX开始,则表示从服务器的根路径开始。如果不需要错误日志,则用/dev/null。系统启动后看到的boa的打印信息就是由/dev/console得到
ServerName 自己写GentleHacker
DocumentRoot /web 这个是存放html文档的主目录,非常重要,浏览器访问的时候会访问其中内容
DiectoryIndex index.html html目录索引的文件名
CGIPath /bin:/usr/bin:/usr/local/bin 提供CGI程序的PATH环境变量值
ScriptAlias /cgi-bin /web/cgi-bin/ 非常重要,指明CGI脚本的虚拟路径对应的实际路径,笔者是在根文件系统下创建web目录的,所以这么设置。
在配置工作做好以后,将两个文件拷贝到已有的ramdisk文件中,具体操作如下。
1. 首先请参考我转载的博文ramdisk介绍与制作,笔者将ramdisk文件系统挂在在/mnt/loop下。
2. 将/opt/boa-0.94.13/src/boa拷贝到文件系统ramdisk下的sbin目录下,从而为文件系统提供新的命令
3. 将配置文件/opt/boa-0.94.13/boa.conf拷贝到etc/boa下
完成上面几步之后则完成了boa服务器到ARM开发板文件系统的移植。
3.2 配置CGIC库
首先在文件系统ramdisk的根目录下创建目录web。
进入目录# cd web
接着执行命令 # mkdir cgi-bin
将在第二步骤中生成好的capture和cgictest.cgi拷贝到目录cgi-bin下,从而完成了cgic的移植。