Boa Web服务器在PC和S3C2440开发板上移植

发布者:WanderlustHeart最新更新时间:2024-07-22 来源: cnblogs关键字:Boa  Web服务器  PC  S3C2440  移植 手机看文章 扫描二维码
随时随地手机看文章

  boa是一个非常小巧的Web服务器,可执行代码只有约60KB。它是一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。下面我们讲解以下boa如何在PC机(虚拟机RedHatAS5环境)完成移植修改工作。

一、下载Boa源码

    下载地址:

    http://www.boa.org/或 http://labs.nevion.com/open-source/ 目前最新发行版本:0.94.13(05年更新版本)

  下载 boa-0.94.13.tar.gz(注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式一样)

  解压:tar xzf boa-0.94.13.tar.gz

二、配置编译boa

  1、#mv boa-0.94.13 boa_pc

   2、#cd boa_pc/src

   3、#vim defines.h修改#define SERVER_ROOT '/etc/boa'统一为“/home/boa”。

    SERVER_ROOT为boa启动时的配置文件boa.conf存放路径,这里我们统一为/home/boa

  4、修改src/boa.c。注释掉语句。

     即修改为:

    #if 0

     if(setuid(0) != -1)

     {

     DIE(icky linux kernel bug!);

    }

     #endif

    否则运行时会提示:boa.c:226 -icky linux kernel bug!:no suchfile or directory

     这里我粗略的理解是因为在root用户获取0(root)权限失败导致不能正常运行!

  5、#./configure 生成makefile

  6、修改交叉编译器(此处为PC与开发板不同之处)

     将:CC= gcc  CPP=gcc -E

     改为:CC=arm-linux-gcc  CPP=arm-linux-gcc -E

  7、#make 编译

     在当前目录下生成一个boa的可执行程序,./boa运行即可,ps能看到的boa,及说明boa能正常工作了。

    注意:

    1)、有些编译器会提示以下错误,按照下面方法解决即可:

      util.c: 100: 1: pasting't'and'->'does not give a valid preprocessing token make: [util.o] Error1

      解决方法:修改compat.h中的:

      #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

      为:

      #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff

    2)、yacc命令找不到

  执行命令:#sudo apt-get install flex bison

  8、#strip boa 优化boa

    这里的优化就是去除boa中的调试信息。

三、修改配置文件boa.conf

  1.建立/home/boa目录, 并复制boa.conf到/home/boa目录下,并按照以下步骤进行修改。

     #mkdir /home/boa

     #cp boa.conf /home/boa

  2.访问端口号设置

   大概25左右:Port 80,可以设定我们访问网页时的端口号默认为80—访问时无需指定

   假如改变了此端口号为8080,必须以下列格式访问: http://192.168.1.3:8080

    一般在同一个电脑上运行多个boa服务器时可采用此方法我们这里保持默认即可

  3.修改访问权限:

     修改User nobody 为 user 0

     修改Group nogroup 为 group 0

   4.设定日志目录:boa日志有两部分,Errorlog  和 AccessLog

     默认为/var/log/boa/error_log和/var/log/boa/access_log两个文件。

     所以我们统一修改为:

     ErrorLog /home/boa/error_log

     AccessLog /home/boa/access_log

     (注意:这里/home/boa目录必须为可写,否则会出项错误:log.c:73 – Unable to dup2 the error log: Bad file r.)

   5.设置html文件目录: 

     默认为:DocumentRoot /var/www

     我们统一修改为:

     DocumentRoot /home/boa/www

  6.设置默认首页: DirectoryIndex index.html

     这是访问网页时若不指定访问的网页名称,服务器默认返回的网页,我们不做修改

   7.设置cgi脚本目录:

       将ScriptAlias /cgi-bin/ /usr/lib/cgi-bin 

      修改为

       ScriptAlias /cgi-bin/ /home/boa/cgi-bin

       注:boa提供cgi编程接口,使得网页具有交互能力,后面我们在做讲解.

   8.测试

      在/home/boa/www中随意放一个测试网页(必须包含index.html文件)  

      我们这里随便建一个文件取名为index.html,里面写一个:hello boa...

       执行#./boa

      在IE中敲入:http://192.168.1.101/ 即可看到刚才的helloo boa

      证明整个boa搭建成功.


关键字:Boa  Web服务器  PC  S3C2440  移植 引用地址:Boa Web服务器在PC和S3C2440开发板上移植

上一篇:s3c2440 nandflash 初始化
下一篇:S3C2440 裸机程序之音频

推荐阅读最新更新时间:2024-11-09 21:29

S3C2440—12.按键中断
一. 总体 要驱动按键中断控制LED亮灭,程序要进行如下几部分操作: 在start.S中对CPSR寄存器中清除I位,使能IRQ,这是大前提 根据原理图找出按键对应的外部中断,对外部中断对应引脚做相应配置,使能相应的外部中断:EINTMASK 开启中断使能:INTMSK要设置 编写C中断处理函数,通过INTOFFSET、EINTPEND确定哪个中断触发,并做相应处理,还要清除中断标志位 编写start.S中的IRQ异常处理函数 二. CPSR设置 CPSR的IRQ中断使能位不使能,都行不通,我就找bug找了一天。。。 在代码重定位之后就对CPSR的I位清零,并且分配栈指针,如下: mrs r0, cpsr
[单片机]
<font color='red'>S3C2440</font>—12.按键中断
linux2.6.32.2 mini2440平台移植-- 配置 USB 外设、SD卡移植
Linux-2.6.32.2 内核对 USB外设的支持是相当丰富的,并且已经包含了 S3C2440 的 USB Host 驱动支持,因此我们只要配置一下内核就可以了,下面是各种 USB外设的详细配置步骤。 1.4.1 配置和测试 USB键盘、扫描器和鼠标 在内核源代码目录的终端输入:make menuconfig,依次选择如下子菜单项: Device Drivers --- HID Devices --- 按空格键选中 USB Human Interface Device (full HID) support ,这样就配置好了 USB键盘和鼠标项。 提示:这里的配置选项对应的内核源代码目录是:linu
[单片机]
单片机快速将库函数版代码移植为寄存器代码方法
  现在单片机开发越来越多用的是库函数版本的,寄存器版本使用越来越少了。但是在有些项目中使用库函数会导致程序运行速度比较慢,没有直接操作寄存器运行起来速度快。所以在对时间要求比较严格的项目中,还是需要使用寄存器来开发。如果不能够找到寄存器相关示例代码的时候,开发起来还是比较困难的。今天就来总结一个快速将库函数移植为寄存器的方法,这个方式为通用方法,在任何单片机上都可以使用。   现在就用一个STM8单片机库函数的工程来举例。   这个代码的主要功能就是使用定时器1的捕获功能来计算输入波形的频率。对于定时器的初始化使用的都是库函数,现在要将定时器初始化部分的库函数修改为寄存器。   首先单步调试,进入初始化函数中。
[单片机]
单片机快速将库函数版代码<font color='red'>移植</font>为寄存器代码方法
Exynos4412 内核移植(二)—— 内核编译过程分析
内核的编译同样是从Makefile 来分析: 一、内核源码结构 Linux内核文件数目近2万,出去其他架构CPU的相关文件,他们分别位于顶层目录下的17个子目录,各个目录功能独立,下面是常用目录: arch:体系结构相关代码 ipc:进程调度相关代码 mm:内存管理 Documentation:帮助文档 net:网络协议 lib:库 scripts:编译相关脚本工具 tools:编译相关工具 drivers:设备驱动 fs:文件系统实现 对于ARM 架构的Exynos4412,其体系相关的代码在arch/arm/目录下,在后面进行的Linux移植时,开始的工作正式修改这个目录下的文件。 二、Linux Make
[单片机]
Exynos4412 内核<font color='red'>移植</font>(二)—— 内核编译过程分析
015_STM32程序移植之_NRF24L01模块
引脚接线图如下所示 STM32引脚 NRF24L01引脚 功能 GND GND 3.3V 3.3V PB8 CE PB9 CSN PB13 SCK PB15 MOSI PB14 MISO PB12 IRQ STM32引脚 CH340引脚 GND GND 3.3V 3.3V TXD RXD RXD TXD NRF24L01分为主从,就是一个发送一个接受,两个的接线图都是按照上面的来进行接线 移植程序 移植成功发送程序之后进行复制成为接受程序,并更改main.C就行了 将
[单片机]
锐龙8040官宣!AMD首创的AI PC性能飙升60%,2024年再涨3倍
AMD 2023年初发布的锐龙7040系列处理器,不但为笔记本带来了迄今最先进的4nm制造工艺、Zen4 CPU架构、RDNA3 GPU架构,还第一次为x86处理器加入了独立的NPU AI引擎硬件单元。 这就是Ryzen AI,也创造了AI PC这一全新概念和应用。 北京时间12月7日凌晨,美国加州圣何塞,AMD Advancing AI大会上,AMD一方面公布了AI PC的最新应用进展,另一方面公布了下一代锐龙8040系列、处理器,AI PC正在进化到新的高度。 AMD Ryzen AI引擎基于全新设计的XDNA 架构,可以脱离网络和云端,在本地执行AI工作负载,进而降低延迟、保护隐私。 当然,它也可以在端-云混合场景中
[家用电子]
Kinect移植到嵌入式ARM平台上面
我毕业设计做的libusb移植, 而kinect通信是基于libusb,所以,就做了一个kinect+libusb在嵌入式平台上面的移植, 经过几个月忙碌,终于将毕业设计给完成了,写下一点心得, 也算是我多年在csdn索取资源的回馈。 本系统主要由两个部件构成:嵌入式硬件平台和USB设备,通过USB总线建立起它们之间通讯,如图2.16所示,USB设备Kinect中包含一个USB集线器,在Kinect内部通过Hub将红外摄像头、彩色摄像头、电机等设备连接到Kinect内部USB总线上面,最后将Kinect设备连接到ARM9嵌入式硬件平台的Roothub上面。 图2.16 系统硬件连接图
[单片机]
Kinect<font color='red'>移植</font>到嵌入式ARM平台上面
英伟达承诺下代手机芯片可运行大型PC游戏
    4月14日消息,Nvidia的一位高管最近声称,移动设备的性能将很快开始超越Xbox 360和PS3。而在本周早些时候举行的投资者会议上,Nvidia总裁黄仁勋也对这个说法进行了佐证。   黄仁勋在会议上展示了Nvidia的下一代Kepler Mobile移动芯片,称其能够运行《战地3》这样的高端PC游戏,并可带来和公司旗下台式机显卡系列相当的高质量图形性能。   “我们想要在竞争中获得多年的领先优势,这值得做出牺牲。”黄仁勋如此说道。据悉,Nvidia已经作出了推迟其他项目的战略决策,好集中全力推动Kepler Mobile芯片。   黄仁勋还提到,iPad能够运行的游戏不过是“1999年的复古作品”,而Kepler Mo
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved