Boa

是一套小型的网页服务器,很适合应用在Embedded System上,并且内建就可以直接支援以C写的CGI网页,这篇是移植Boa到ARM9

S3C2410平台的过程,Linux版本为2.6.17.4 ,使用arm-linux toolchain 3.4.1编译。

1.产生Makefile

下载Source code并解压缩进到src目录。

# ./configure –host=arm-linux

2.修改Makefile使用跨平台编译

CC = arm-linux-gcc

CPP = arm-linux-gcc -E

# make (如果编译或执行时有错误请看Q&A)

# arm-linux-strip boa

3.配置Boa

可以在源码目录找到这个设定档,放到/etc/boa里面,有修改的部份如下:

User 0

Group 0

#DirectoryMaker /usr/lib/boa/boa_indexer

CGIPath /bin:/usr/bin:/var/www/cgi-bin

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

然后需要放一个mime.types档案在/etc,我是直接复制ubuntu里的档案。

4.加入boa执行档

将编译好的boa执行档加入档案系统/bin,要启动server只要输入boa即可,可到/var/log/boa查看log。

问题Q&A:

Q:使用toolchain 3.4.1编译出现错误

arm-linux-gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c

util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token

make: *** [util.o] Error 1

A:修改src/compat.h

找到

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

修改成

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

Q:执行boa出现"gethostbyname::No such file or directory"

A:需将boa.conf里的ServerName开头注解拿掉

Q:无法启动Boa,error log显示"boa.c:266.icky Linux kernel bug!:No such file"

A:修改src/boa.c,将底下判断式注解掉:

/*if (setuid(0) != -1) {

DIE("icky Linux kernel bug!");

}*/

重新编译

Q:无法启动Boa,error log显示"boa.c:211 - getpwuid….略"

A:修改src/boa.c,将底下两个判断式注解掉:

/*if (passwdbuf == NULL) {

DIE("getpwuid");

}

if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {

DIE("initgroups");

}*/boa的配置文件是/etc/boa/boa.conf。

Port:boa服务器监听的端口,默认的端口是80。如果端口小于1024,则必须是root用户启动服务器。

Listen:绑定的ip地址。不使用这个参数时,将绑定所有的地址。

User:连接到服务器的客户端的身份,可以是用户名或UID。(为什么非要指定为文件的所有者才能访问网页呢?nobody用户也有读权限啊)

Group:连接到服务器的客户端的组,可以是组名或GID。

ServerAdmin:服务器出故障时要通知的邮箱地址。

ErrorLog:指定错误日志文件。如果路径没有以“/”开始,则相对于ServerRoot路径。没有配置时默认的文件是/dev/stderr。若不想记录日志,指定文件为/dev/null。

AccessLog:设置存取日志文件,与ErrorLog类似。

UseLocaltime:设置使用本地时间,使用UTC时注释这个参数。这个参数没有值。

VerboseCGILogs:在错误日志文件中记录CGI启动和停止时间,若不记录,注释这个参数。这个参数没有值。

ServerName:指定服务器的名称,当客户端使用gethostname + gethostbyname时返回给客户端。

VirtualHost:虚拟主机开关。使用此参数,则会在DocumentRoot设定的目录添加一个ip地址作为新的DocumentRoot来

处理客户端的请求。如DocumentRoot设置为/var/www,则

则转换成/var/www/127.0.0.1/,若注释此参数,则为/var/www/。

DocumentRoot:HTML文件的根目录(也就是网站的目录)。

UserDir:指定用户目录。

DirectoryIndex:指定预生成目录信息的文件,注释此变量将使用DirectoryMaker变量。这个变量也就是设置默认主页的文件名。

DirectoryMaker:指定用于生成目录的程序,注释此变量将不允许列目录。

DirectoryCache:当DirectoryIndex文件不存在,而DirecotryMaker又被注释掉时,将列出这个参数指定目录给客户端。

KeepAliveMax:每个连接允许的请求数量。如果将此值设为" 0 ",将不限制请求的数目。

KeepAliveTimeOut:在关闭持久连接前等待下一个请求的秒数。(秒)。

MimeTypes:设置包含mimetypes信息的文件,一般是/etc/mime.types。

DefaultType:默认的mimetype类型,一般是text/html。

CGIPath:相当于给CGI程序使用的$PATH变量。

SinglePostLimit:一次POST允许最大的字节数,默认是1MB.

AddType: 增加MimeType没有指定的类型,例: AddType type extension [extension ...]。要使用cgi,必须添加cgi类型:AddType application/x-httpd-cgi cgi

Redirect:重定向文件

Aliases:指定路径的别名。

ScriptAlias:指定脚本路径的虚拟路径。

boa linux arm修改网卡,嵌入式linux架设boa webserver相关推荐

  1. boa linux arm修改网卡,Boa服务器在ARM+Linux上的移植

    Boa服务器在ARM+Linux上的移植 一.Boa服务器介绍 Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右. 作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会 ...

  2. boa linux arm修改网卡,移植Boa Web服务器到ARM-Linux系统

    本次移植的主要参考资料: 1. <嵌入式Web服务器移植 > 是网上一份Boa移植文档,比较全面.本文档就是基本参照它来写的.基本上上可以说是这篇文章的修改版,增加了我的移植经验.由于这篇 ...

  3. arm开发板嵌入式 linux 修改开机启动logo,ARM开发板 嵌入式Linux 修改开机启动LOGO...

    1.嵌入式 Linux LOGO显示原理 嵌入式Linux是直接在FrameBuffer的基础上.直接显示一个ppm格式的图象.它 kernel/drivers/video/fbcon.c中的fbco ...

  4. 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...

  5. vmware workstation克隆linux后修改网卡为eth0方法

    原文出自http://www.2cto.com/os/201306/222812.html vmware workstation克隆linux后修改网卡为eth0方法 场景:  vmware work ...

  6. 嵌入式linux数控系统,关于ARM+DSP嵌入式Linux数控系统设计.pdf

    2012年 7月 机床与液压 Ju1.2012 第40卷 第 13期 MACHINE TOOL &HYDRAULICS Vo1.40No.13 DOI:10.3969/j.issn.1001- ...

  7. 《嵌入式Linux应用开发完全手册》——1.2 基于ARM处理器的嵌入式Linux系统

    本节书摘来自异步社区<嵌入式Linux应用开发完全手册>一书中的第1章,第1.2节,作者 韦东山,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.2 基于AR ...

  8. Linux Ubuntu 修改网卡名字

    Linux Ubuntu 修改网卡名字 一.写在前面 这篇文章主要介绍了,Linux Ubuntu 系统下通过以下两种方式修改网卡的名字,这里根据自己的实际操作验证,从中学习记录,方便后续查询. 邮箱 ...

  9. linux内核培训广州,嵌入式Linux驱动开发高级培训班-华清远见嵌入式培训中心

    课程目标 本课程以案例教学为主,系统地介绍Linux下有关FrameBuffer.MMC卡.USB设备的驱动程序开发.参加本课程学习的学员,因为具备了Linux设备驱动开发基础,所以本课程针对性较强, ...

最新文章

  1. 使IIS服务器支持下载 apk/ipa 安装包
  2. sql语句添加删除外键
  3. BZOJ1922 SDOI2010 大陆争霸 最短路
  4. 真正聪明的人,为什么从不去社交?
  5. 设计一代码,逆置带头结点的动态单链表L
  6. 关于list遍历时sychronizedList方法和synchronized同步块的线程安全问题思考
  7. 微信“小程序”开发小指南
  8. 8X53 VS 6763
  9. 列出Server上5张最大的表
  10. Linux Commands
  11. 手工配置Service的过程中。
  12. 刘强东案章泽天首发声;科大讯飞回应 AI 同传造假;新 iPhone 被指存缺陷 | 极客头条...
  13. android逐帧播放器,Kinovea(逐帧播放器)
  14. uniapp开发原生android插件,获取浏览器cookie
  15. 无线网卡服务器关闭了怎么办,台式机无线网卡自动禁用怎么办
  16. 打印纸张尺寸的简单说明
  17. 注册网站域名多少钱_申请域名多少钱
  18. 计算机时区找不到北京,电脑时区里为何没有标准北京时间
  19. 如何将新手引导模块化?答案在此
  20. win10商店下载主题壁纸提取

热门文章

  1. svn 添加目录 linux,linux-现有目录的SVN设置
  2. 在计算机上收回光驱快捷键,如何使用Windows键盘快捷键打开光盘驱动器
  3. esp32摄像显示时间_科普系列 || 第一弹~基于ESP32的WiFi连接
  4. 这些器件是电子垃圾?是艺术作品!!!
  5. 十年硬件老司机,结合实际案例,带你探索单片机低功耗设计!
  6. 仅靠一杯奶茶钱8.8元,你就能转到人工智能专业?
  7. ROracle Mysql_ROracle包查询数据库中文乱码
  8. 高级java知识结构图,Spring高级框架课程笔记 PDF 下载
  9. 看《长安十二时辰》可以了解哪些算法知识
  10. 解决Ubuntu16.04虚拟机窗口全屏问题