嵌入式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。修改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库,地址为: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的移植。

时间: 2024-12-23 18:29:37

嵌入式linux下web服务器搭建的相关文章

Linux下DNS服务器搭建详解

 Linux下DNS服务器搭建详解 DNS  即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制.其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析. 下面对DNS的工作流程及原理进行简要说明 DNS的查询流程:需要解析服务的Client先查看本机的/etc/hosts:若无结果,则client查看本地的DNS缓存服务器:若无结果,则查找所属域的首选DNS服务器:若此时本地首选DN

linux 下 svn 服务器搭建与配置

Subversion是一个自由,开源的版本控制系统,可以记录每一次文件和目录的修改情况.这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节. linux 下 svn的搭建 首先安装 subversion yum  install -y subversion 使用rpm -qa subversion 查看是否安装完成 安装完成后进行配置 首先在home 下建立svn的数据目录和密码认证目录 说明: svndata 目录用于存放项目目录,svnpassw 目录存放密码及认证文件 在svn

Linux下NTP服务器搭建

一.搭建准备 1.确定自己的时区 #date命令可以查看当前系统时间,中国的时区为CST.使用tzselect命令进行配置时区 配置文件的修改:/etc/sysconfig/clock 2.检查NTP服务程序 #rpm -qa |grep ntp fontpackages-filesystem-1.41-1.1.el6.noarch ntpdate-4.2.4p8-3.el6.x86_64 如果没有,则需要安装ntp程序 #yum -y install ntp ntpdate 需要配置好yum源

Linux下Web服务器开发

学习提示: 1. 在"桌面环境"中动手练习,若环境不流畅可选择WebIDE或字符界面. 2. 在教程下方"课程问答"中提出问题,或"共享桌面"寻求远程帮助. 3. 在教程下方"实验报告"中完成作业,记录心得.公开报告可以获得大家点评. 4. 在"我的代码库"中用GIT提交你的实验代码. Web服务器 The way to learn a programming language is to write pr

Linux下Jenkins服务器搭建

系统环境 操作系统:CentOS6.9 java jdk:java 8 Jenkins版本:jenkins-2.78-1.1.noarch.rpm 关闭防火墙 注意:如果是基于msbuild构建.net项目,最佳实践是在windows server上搭建Jenkins服务,原因是msbuild是集成在.net framework框架中!!! windows server 2008r2 sp1:IIS-->IE11-->vs 2013(with update5)-->java jdk8--

Linux上web服务器搭建

安装php依赖包: yum -y install gcc gcc++ libxml2 libxml2-devel yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y yum -y install curl-devel yum install openssl openssl-devel yum install libmcrypt libmcrypt-d

Linux 下 Samba 服务器搭建

初学,分享 环境和条件--- 虚拟机:VMware虚拟机 系统:Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 1:开机进入系统终端,快捷键 "Ctrl"+"Alt"+"T" , 在终端输入 "sudo apt-get install samba samba-c

Linux下SVN服务器搭建和维护

在工作中需要使用SVN作为代码管控服务器.所以运维需要掌握SVN服务器的搭建和一些常用操作. 安装Apache服务 wget  tar jxvf httpd-2.2.22.tar.bz2 cd httpd-2.2.22 ./configure --prefix=/data/svn_base/httpd  --enable-so --enable-dav --enable-dav-fs --enable-maintainer-mode --with-included-apr --enable-re

linux下ftp服务器搭建

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP是File Transfer Protocol(文件传输协议).顾名思义,就是专门用来传输文件的协议.简单地说,支持FTP协议的服务器就是FTP服务器. 目前开源操作系统中常用的FTP服务器程序主要有  :vsftpd.    proFTPD. pureFTPD等,我这次是用的是vsftpd来搭建 1.vsftpd安装 #yum install