首页 > 系统相关 >嵌入式linux下web服务器搭建(转载)

嵌入式linux下web服务器搭建(转载)

时间:2023-12-15 11:36:23浏览次数:22  
标签:opt web 嵌入式 3.4 linux bin boa arm

一、移植编译生成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

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

标签:opt,web,嵌入式,3.4,linux,bin,boa,arm
From: https://www.cnblogs.com/okyihu/p/17903015.html

相关文章

  • JavaWeb - Day08 - MySQL - 多表查询、事务、索引 - Mybatis - 入门
    01.MySQL-多表查询-概述数据准备#建议:创建新的数据库createdatabasedb04;usedb04;--部门表createtabletb_dept(idintunsignedprimarykeyauto_incrementcomment'主键ID',namevarchar(10)notnulluniquecomment'部门名称',......
  • Linux服务器环境安装mysql
    背景1、安装环境:kvm虚拟机2、运行环境:linux3、架构:x864、安装mysql版本:mysql-5.71、安装准备#Mysql官网https://downloads.mysql.com/archives/community/#下载安装包wget-i-chttp://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2、安装m......
  • 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    联系:1.Linux的内核源代码和Linux的应用程序都可以自由获得,因此很多公司组织开发了属于自己的Linux发行版。2.基本上可以分为三大系类:Slackware、RedHat、Debian3.每个系列最具代表性的商业服务器级的发行版,分别是SUSELinuxEnterprise;RedHatEnterpriseLinux;UbuntuServ......
  • Linux(ps -aux命令)
    在Linux中,ps-aux是一个常见的用于查看系统进程信息的命令。以下是ps-aux命令的解释:ps:进程查看命令。-aux:这是ps命令的选项,有以下三个部分的组合:-a:显示所有用户的进程,而不仅仅是当前用户的。-u:显示详细的用户/拥有者(user)信息。-x:显示没有控制终端的进程。......
  • 0x09.Linux基础
    版本号xx.yy.zzxx是主版本号,yy是次版本号,奇数代表开发版,偶数代表稳定版,zz是更新次数。确定版本号,找expredhat忘记密码重新启动,在等待倒计时的时候,按e(编辑的意思)再按一下e键,停留在第二个,再按e。输入空格和s(单一的意思),再回车回到第二个,输入一个b(引导的意思),直接进入......
  • linux 安装jdk
    1.先下载jdk8,下载地址https://www.oracle.com/java/technologies/downloads/ ;本人用的jdk:jdk-8u333-linux-x64.tar.gz2.上传到服务器中3.将jdk8复制到/usr/local/下:cp./jdk-8u333-linux-x64.tar.gz/usr/local/4.进入到/usr/local目录,解压文件:tar-zxvfjdk-8u333-linux......
  • linux kernel modify printk buf size
    linuxkernelmodifyprintkbufsizeconfigureCONFIG_LOG_BUF_SHIFTmodifycode:wyk@ubuntu:~/soc/linux$gitdiffkernel/printk/printk.cdiff--gita/kernel/printk/printk.cb/kernel/printk/printk.cindexfd337bf9b..aaa98a8eb100644---a/kernel/printk/......
  • Linux_3.2 Shell语法
    1循环语句1.1for…in…do…done命令格式:forvarinval1val2val3#类似于枚举do语句1语句2...done示例1,输出a2cc,每个元素一行:foriina2ccdoecho$idone示例2,输出当前路径下的所有文件名,每个文件名一行:forfilein`ls`#$(ls)d......
  • containerd-wasm-shims k8s 运行webassembly 的containerd shim
    containerd-wasm-shims属于一个包装,基于了runwasi可以实现在k8ss中运行webassembly工作负载,使用上提供了多种wasm应用runtimes以及扩展,同时目前KWasm组织也包装了一个k8soperator实现方便的部署说明基于webassembly的运行模式是越来越多了,大家趋向于与k8s以及容器集成......
  • 必须备份的 9 个 Linux 目录和不应该备份的目录
    备份是一项标准的系统管理服务。换句话说,组织中的每个人,从首席执行官到临时工,都依赖我们提供备份。人们会犯错误,您将需要用户数据、公司数据和日志的备份。但在Linux系统上,您需要在备份集中包含哪些内容并不明显。本文将指导您了解备份中应该包含哪些内容和不应该包含哪些内容。......