[置顶] ARM-Linux下WEB服务器Boa的移植、配置和运行测试
Linux下使用的轻量级WEB服务器主要有:lighttpd、thttpd、shttpd和boa等等,而Boa是使用最为广泛的轻量级WEB服务器之一(当然,阿帕奇是世界使用排名第一的Web服务器软件)。Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。
工具链为:arm-hismall-linux-gcc,海思平台。
一、Boa移植
1.下载boa-0.94.13.tar.gz
http://download.csdn.net/detail/huangminqiang201209/5769107
2.编译
[root@localhostweb]#tar xzvf boa-0.94.13.tar.gz
[root@localhostweb]#cd boa-0.94.13
[root@localhostboa-0.94.13]#cd src/
[root@localhostsrc]#./configure //生成Makefile
[root@localhostsrc]#vi Makefile
30:CC = gcc
31:CPP = gcc -E
该为:
CC= arm-hismall-linux-gcc
CPP= arm-hismall-linux-gcc -E
[root@localhostsrc]# vi compat.h
120:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff //##的作用是把2个参数合并到一起
修改成
#defineTIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
[root@localhostsrc]# vi log.c
72:if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the errorlog");
}
为(即屏蔽):
/*if (dup2(error_log, STDERR_FILENO) == -1){
DIE("unable to dup2 the errorlog");
}*/
[root@localhostsrc]#vi boa.c
73:if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the errorlog");
}
为(即屏蔽):
/*if (dup2(error_log, STDERR_FILENO) == -1){
DIE("unable to dup2 the errorlog");
}*/
211:if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name,passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
为(即屏蔽):
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name,passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
#endif
[root@localhostsrc]# make
[root@localhostsrc]#arm-hismall-linux-strip boa //去除调试信息,减小体积。(可选)
二、配置Boa
)boa.conf
Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。
[root@localhost src]# cd ..
[root@localhost boa-0.94.13]# vi boa.conf
(1)Group的修改
修改Group nogroup为Group 0 //开发板上有的组,设为0
(2)user的修改
修改User nobody为User 0
(3)Alias的修改
修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 为 Alias /cgi-bin/ /www/cgi-bin/
(4)DoucmentRoot的修改
修改DoucmentRoot /var/www 为DoucmentRoot /www
(5)ServerName的设置
修改#ServerName www.your.org.here为 ServerName www.your.org.here,否则会出现错误“gethostbyname::No such file or directory”
(6)AccessLog修改
修改AccessLog/var/log/boa/access_log为#AccessLog /var/log/boa/access_log,否则会出现错误提示:“unable to dup2 the errorlog: Bad file deor”
2)开发板etc配置
/etc $mount-t nfs -o nolock 192.168.1.211:/work/nfs /nfs
/etc $cp/nfs/mime.types .
/etc $mkdir boa
/etc $cd/boa
/etc/boa $ cp /nfs/web/boa-0.94.13/boa.conf.
/etc/boa $cp/nfs/web/boa-0.94.13/src/boa .
/etc/boa $mkdir /www
/etc/boa $ mkdir -p/www/cgi-bin
3)运行boa
/etc/boa $./boa
[16/Jul/2013:19:22:51+0000] boa: server version Boa/0.94.13
[16/Jul/2013:19:22:51+0000] boa: server built Jul 17 2013 at 10:38:13.
[16/Jul/2013:19:22:51+0000] boa: starting server pid=718, port 80
三、Boa测试
1)静态网页测试
将静态网页存入根文件系统的/www目录下(/1.jpg即为/www/1.jpg)
/www $ cat index.html
<html>
<body>
<h1>My First Heading </h1>
<p>This is a paragraph</p>
<h2>My First Heading </h2>
<a href="http://www.baidu.com">This is a link</a>
<img src="/1.jpg" width="104" height="142" />
</body>
</html>
直接在浏览器中输入开发板的IP地址(比如我的是http://192.168.1.66) ,出现如下画面。静态HTML调试成功。
2)CGI功能测试
1)生成GCI可执行程序
[root@localhost for_test]# cat helloworldCGI.c
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
printf("Content-type: text/html\n\n");
printf("<html>\n");
printf("<head><title>CGI Output</title></head>\n");
printf("<body>\n");
printf("<h1>Hello,world.</h1>\n");
printf("<body>\n");
printf("</html>\n");
exit(0);
}
[root@localhost for_test]# chmod 777 helloworldCGI.c
[root@localhost for_test]# arm-hismall-linux-gcc helloworldCGI.c
2)开发板端
/etc/boa$cp /nfs/for_test/a.out /www/cgi-bin/
3)浏览器
在浏览器输入: http://192.168.1.66/cgi-bin/a.out ,网页出现 Hello,world. 调试成功!
四、参考文献
boa web服务器移植 :http://blog.chinaunix.net/uid-25544300-id-3227511.html
三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记 :http://blog.chinaunix.net/uid-26921272-id-3322975.html
[置顶] ARM-Linux下WEB服务器Boa的移植、配置和运行测试的更多相关文章
- 嵌入式web服务器BOA的移植及应用
嵌入式web服务器子系统 一.嵌入式web服务器的控制流程 如下图所示,嵌入式web服务器可实现通过网络远程控制嵌入式开发板,便捷实用. 控制流程:浏览器 --->>>嵌入式开发板 ...
- web服务器boa的移植
1.下载官方网站 http://www.boa.org/ 我下载的是0.94.13版本 2.解压 tar -zxvf boa-0.94.13.tar.gz 3.进入src目录 ./configure ...
- Linux下Web服务器环境搭建LNMP一键安装包[20130911更新]
2012年08月14日 ⁄ LNMP ⁄ 评论数 73 ⁄ 被围观 25,200次+ 最新版本:lnmp-2.4 安装说明:请保证服务器能够正常上网.服务器系统时间准确.yum命令可以正常使用! 1. ...
- Linux下svn服务器的安装与配置-备份-恢复-计划任务
简介:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subvers ...
- Linux下NFS服务器的搭建与配置
一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...
- Linux下Samba服务器的安装和配置
第一步:sudo apt-get install samba smbclient 安装samba服务器. 第二步:打开/etc/samba/smb.conf文件,在末尾添加下面的字段: [用户名] c ...
- Linux下NFS服务器的搭建与配置(转载)
一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...
- Linux下NFS服务器的搭建与配置(转)
一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...
- Linux下FTP服务器(vsftpd)配置:
1. vsftpd 安装:yum install vsftpd 2. 添加用于: useradd admin -d /home/data -s /sbin/nologin usermod -d /ho ...
随机推荐
- JSONToObejct 问题 part 1
直接截图,就明白了 前端的处理 这里用到 JSON2.stringify() 这个方法是将对象(object) 转换成 [{},{},+...+,{}] 这种键值对形式的数据,不然rows只是一个选 ...
- Markdown 11 种基础语法
现在是我在学习Markdown时做的笔记.学完这些Markdown的基本使用已经不成问题. 1. 标题设置(让字体变大,和word的标题意思一样)在Markdown当中设置标题,有两种方式: 第一种: ...
- HDOJ1232 并查集
所谓并查集 并:Union 查:Find 定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.常常在使用中以森林来表示. 集就是让每个元素构成一个单 ...
- iOS 获取字符串中的单个字符
要取到单个字符,就要知道字符串的编码方式,这样才能够定位每个字符在内存中的位置.但是,iOS的字符串编码是不固定的,因此,需要设置一个统一的编码格式,将所有其他格式的字符串都转化为统一的格式,然后就可 ...
- Qt5程序开机自启动(windows)
简介 window下开机启动最简单的实现方式就是在注册表中添加启动项目 添加位置有两个 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVer ...
- Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建(转)
这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 如果还没有搭建好环境( ...
- HDU SPFA算法 Invitation Cards
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1535 分析: 题意:求1点到其它点的最短距离之和+其它点到1点的最短距离之和 前面一部分直接用SPFA ...
- Derby的下载安装和使用,(和JAVA中使用Derby)
首先是Java环境变量要配置: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Fil ...
- 算法学习笔记(三) 最短路 Dijkstra 和 Floyd 算法
图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是 ...
- Android学习笔记之View(一):LayoutInflater
使用LayoutInflater加载布局的两种方式: 第一种: LayoutInflater inflater=LayoutInflater.from(context); inflater.infla ...