1、下载Boa Webserver的源码

http://www.boa.org/

2、解压并编译Boa Webserver

$ tar xvf boa-0.94.13.tar.gz

由于Boa Webserver的Makefile中没有install,我们只是进行编译,然后手动拷贝编译后的二进制文件到相应的文件目录中,因此在使用configure时无须指定位置。

同时在make时,可能会出现不少错误,部分的错误处理方法可以参看<附录>:

$ cd boa-0.94.13/src/

$ ./configure

$ apt-get install bisonflex   否则会出现错误提示

修改 src/compat.h 两处地方 ,否则会出现错误提示

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

修改成#defineTIMEZONE_OFFSET(foo)(foo)->tm_gmtoff

若要修改配置文件boa.conf的存放位置,假设修改为"/web",则需修改defines.h

#define SERVER_ROOT "/etc/boa"

修改成 #define SERVER_ROOT "/web"

$ make

3、配置Boa Web server环境

 

目录结构如下:

/web             存放html文件

/web/cgi-bin     存放cgi文件

/etc/boa        存放boa.conf

/bin            存放boa和boa_indexer

boa.conf 缺省配置:

User nobody

Group nogroup

DirectoryIndex index.html

CGIPath /bin:/usr/bin:/usr/local/bin

MimeTypes /etc/mime.types

ErrorLog/var/log/boa/error_log

AccessLog /var/log/boa/access_log

 

boa.conf 改动配置:

User 0

Group 0

#DirectoryMaker /usr/lib/boa/boa_indexer#注释掉,提高访问速度

#ErrorLog /var/log/boa/error_log  #注释掉,关闭错误日志

#AccessLog /var/log/boa/access_log #注释掉,关闭访问日志

DocumentRoot/web                    #存放index.html

ScriptAlias /cgi-bin//web/cgi-bin/  #存放cgi文件

boa.conf 添加配置:

AddType text/plain  txt

AddType image/gif  gif

AddType text/html  html

AddType text/html  htm

AddType text/xml   xml

AddType image/jpeg  jpe

AddType image/jpeg  jpeg

AddType image/jpeg  jpg

AddType image/x-icon  ico

编译后在boa-0.94.13/src/中有2个二进制文件,那就是我们需要的执行档,只需拷贝到/bin中,注意这里的操作权限:

$ sudo cp boa/boa-0.94.13/src/boa /bin

$ sudo cp boa-0.94.13/src/boa_indexer /bin

$ ls /bin/boa*

/bin/boa /bin/boa_indexer

BoaWebserver的配置文件是boa.conf。该文件需要被放置在/etc/boa目录下。同时我们需要对boa.conf稍做修改,注意一定是在/etc/boa下的boa.conf进行修改:

# sudo mkdir /etc/boa

# cp boa/boa-0.94.13/boa.conf /etc/boa/

# gedit /etc/boa/boa.conf

a)【可选配置】找到Group nogroup修改为Group 0; user nobody修改为user 用户名;

修改Group的参数为0是因为系统中没有nogroup组,如果你没有nobody用户,那么Usernobody也要做相应修改(修改成自己的用户名亦可)。其它采用默认设置。如有必要,可以参看<附录>中的参数说明。

b)【可选配置】servername www.your.org.here的注解去掉;

c)修改DocumentRoot后的路径为 /web,这个是文档的主目录;

d)找到ScriptAlias /cgi-bin/ /usr/lib/cgi-bin

修改为ScriptAlias /cgi-bin/ /web/cgi-bin

e)【可选配置】修改MimeTypes /etc/mime.types为MimeTypes/web/mime.types来指明mime.types文件位置。如果没有以/开始,则表示从服务器的根路径开始。可以注释掉,避免使用mime.types文件,此时需要用AddType在本文件里指明。

若开启日志功能(boa.conf的缺省配置)

建立日志目录【目录/var/log/boa是相关的日志文件保存目录。】:

# mkdir -p /var/log/boa

目录/web/用于保存HTML文档,而/web/cgi-bin用于保存CGI脚本。

4、测试

编写cgi测试代码:

  1. int main(void)
  2. {
  3. printf("Content-type:text/html\n\n"); //这句一定要加上
  4. printf(" Hello,world.");
  5. exit(0);
  6. }

$gcc -o test.cgi test.c

在测试之前,需要先运行Boa Webserver。

$sudo boa

注意这里使用的是root权限,如果是普通用户可能会有报错。

# ps -aux 查看boa进程已经启动

然后打开浏览器,输入http://192.168.1.194/cgi-bin/test.cgi就可以看到cgi测试效果。

当然192.168.1.194是本机地址。可以使用ifconfig命令查看ip地址。然后输入也可以达到一样的效果。

# ifconfig

常见错误

错误1:

request.c: In function ‘get_request’:

request.c:84: warning: pointer targets in passing argument 3 of‘accept’ differ in signedness

gcc -g -O2 -pipe -Wall -I.  -c -o response.o response.c

gcc -g -O2 -pipe -Wall -I.  -c -o select.o select.c

gcc -g -O2 -pipe -Wall -I.  -c -o signals.o signals.c

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

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

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

解决办法:根据提示修改源码中的src/compat.h文件。

修改:#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff

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

错误2:

[17/Aug/2013:09:28:17 +0000] boa.c:226 - icky Linux kernel bug!: Success
解决办法:注释掉boa.c的226行

BOA服务器搭建步骤的更多相关文章

  1. zedboard--基于zedboard的demo系统的boa服务器搭建(二十一)

    zedboard提供的demo系统很迷你,但是也能移植嵌入式Web服务器的.这里就移植boa服务器. 1.下载Boa服务器源代码(安装好了交叉编译器) http://www.boa.org/,选择最后 ...

  2. linux下svn服务器搭建步骤

    安装步骤如下: 1.yum install subversion 2.输入rpm -ql subversion查看安装位置,如下图:   我们知道svn在bin目录下生成了几个二进制文件. 输入 sv ...

  3. 【Git】从服务器搭建到提交分支使用——初学者轻松上手篇

    GitHub就是一个免费托管开源代码的远程仓库,个人可以把代码寄存处上面,不过会被公开.对于商业公司来说在Linux上搭建一台Git服务器作为私有仓库使用.开发人员在本地下载仓库代码,协同开发.本篇介 ...

  4. Rsync 服务器搭建

    Rsync简介 rsync 是一个 Unix 系统下的文件同步和传输工具. 它具备以下特性: 1. 能更新整个目录和树和文件系统 2. 有选择性的保持符号链链.硬链接.文件属于.权限.设备以及时间 等 ...

  5. 手把手教你树莓派实现简易室内监控系统(C)之BOA服务器的搭建

    本篇主要讲利用BOA服务器做室内监控系统的服务器端. 古人云:万事开头靠百度,实在不行就Google.小编也是一步一步的,亲自搭建成功,不能说是万全之策,仅仅是给大家一个参考就满足了. 第一步: 1. ...

  6. Ubuntu 10.04——boa服务器的搭建

     声明:自从第一次发表博文不知不觉过去了好久了,非常抱歉没能把自己的东西分享出来,但是由于上家公司本月初裁员,所以致使学的新东西成了半成品,无奈又换了一家,目前已工作三周了,自己也很想写博文分享知识, ...

  7. 【ARM-Linux开发】Rico Board DIY系列实验教程 Day 2——搭建Boa服务器

    一:BOA WebServer简介 BOA WebServer是一款单任务的HTTP服务器,与其他网页服务器不同之处,是当有连接请求到来是,它既不是为每个连接都单独创建进程,也不是采用复制自身进程处理 ...

  8. 基于微软hyper-v虚拟化服务器搭建方法和步骤整理

    基于Microsoft基础设施私有云计算搭建 摘要:私有云是指组织机构建设的专供自己使用的云平台,它所提供的服务不是供他人使用,而是供自己的内部人员或分支机构使用,不同于公有云,私有云部署在企业内部网 ...

  9. 移植BOA服务器到开发板

    移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...

随机推荐

  1. Java并发包——线程安全的Collection相关类

    Java并发包——线程安全的Collection相关类 摘要:本文主要学习了Java并发包下线程安全的Collection相关的类. 部分内容来自以下博客: https://www.cnblogs.c ...

  2. Android 学习路线图(转载自https://blog.csdn.net/lixuce1234/article/details/77947405)

    程序设计 一.java (a)基本语法(如继承.异常.引用.泛型等) Java核心技术 卷I(适合入门) 进阶 Effective Java中文版(如何写好的Java代码) Java解惑 (介绍烂Ja ...

  3. 问题解决:FFmpeg视频编解码库,无法解析的外部信号

    在编译FFmpeg相关项目时.可能会出现: error LNK2019: 无法解析的外部符号 "int __cdecl avpicture_fill(struct AVPicture *,u ...

  4. ext.net 2.5 导出excel的使用方法

    前台页面的导入,导出 <ext:FileUploadField ID="FileUploadField_Import" runat="server" Bu ...

  5. POJ3264Balanced Lineup(最基础的线段树)

    採用一维数组建树. (由于一维数组建的是全然二叉树,时间上比用孩子节点指针建树慢.只是基本能够忽略=-=) #include<iostream> #include<cstdio> ...

  6. 使用正則表達式的格式化与高亮显示json字符串

    使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...

  7. POST 请求静态文件 响应405

    使用post方式请求js.html这样的静态文件一般的web服务器都会返回405 Method Not Allowed. 我测试用的web服务器用的是IIS(windows10+IIS10),理论上来 ...

  8. Java面试通关要点汇总整理【终极版】(转载)

    简历篇 请自我介绍 请介绍项目 基础篇 基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区 ...

  9. webstorm使用帮助(转自http://my.oschina.net/longteng2013/blog/138010),另外有部分内容摘自其它人博客

    为了更高效的开发代码,这里列出了一些webstorm的快捷键和zencoding 发表于1 年 前(2013-06-17 00:19)   阅读(2101) | 评论(2) 11人收藏此文章, 我要收 ...

  10. 蓝牙4.0 BLE 广播包解析

    在使用EN-Dongle捕获和解析广播包之前,我们先了解一下BLE报文的结构,之后,再对捕获的广播包进行分析.在学习BLE的时候,下面两个文档是极其重要的,这是SIG发布的蓝牙的核心协议和核心协议增补 ...