嵌入式linux下web服务构建

一、移植编译生成boa二进制文件

Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。

首先下载boa源码包,下载链接:http://www.boa.org/

解压到特定目录,本人使用的是/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。修改3132行如下(具体要看你的交叉编译器在哪个目录下面):

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文件:

注释掉225227行的内容

// 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库,地址为:http://www.boutell.com/cgic/cgic205.tar.gz。解压到/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

将在第二步骤中生成好的capturecgictest.cgi拷贝到目录cgi-bin下,从而完成了cgic的移植。

转载: http://blog.chinaunix.net/uid-28791381-id-3580633.html

你可能感兴趣的:(网络编程)