在web服务器中,较为常用的是tomcat,nigix。但是这种服务器比较大,占用资源比较多,并不适合于嵌入式设备中。而boa是一个很轻便的web服务器,部署简单,占用资源少,支持多种语言。
1.下载boa源码到官方网站www.boa.org下载,或者自行在网上找资源。我使用的是boa-0.94.13.tar.gz版本。
2.配置boa的编译环境
安装bison:
sudo apt-get install bison
安装flex:
sudo apt-get install flex
解压压缩包:
tar -xvf boa-0.94.13.tar.gz
3.编译配置
进入目录 boa-0.94.13/src
配置:
./configure
4.编译
make
5.修改配置文件boa-0.94.13/boa.conf
A.将Group nobody 改为Group 0
这里Group 0用户即为root用户,修改之后boa服务器拥有更高的权限。这里可根据需要进行修改
B.最后一行改为ScriptAlias /cgi-bin/ /var/www/cgi-bin/
C.修改compat.h第120行 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
改为 #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
6.部署到linux中
A.将boa-0.94.13/src中的boa boa_indxer拷贝到linux的/bin目录,并添加777q权限
B.在/etc新建目录,mkdir boa,将 boa-0.94.13/boa.conf拷贝到/etc/boa
C.在/var目录下新建www目录,并在/var/www/ 下新建cgi-bin目录
D.在/var/log 新建 boa目录,用于存放生成的log文件
7.将index.html放到/var/www目录下
8.将c语言编译生成的.cgi文件放到/var/www/cgi-bin目录下
7.启动boa
boa
8.在浏览器下输入linux的ip地址即可访问到web。
在运行boa中出现的一下问题及解决方法:
1.如果需要访问系统变量,需要修改运行用户为root,将boa.conf的Group nobody修改为
Group root,同时需要修改boa-0.94.13/src/boa.c,将下面的程序注释226行,否则无法以root运行
if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}
修改之后重新编译,把新生成的boa_indxer拷贝到linux的/bin目录
2.使用shell 作为cgi程序格式为:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
echo -e “Content-type:text/html\n\n”
echo “hello boa shell cgi”
文件保存为.cgi后缀
3.使用sqlite3作为数据库时,需要将数据文件所在的文件夹添加可执行权限,如user.db存放在sqlite3文件夹下,需要同时给文件夹和数据库添加权限,执行以下命令
chmod 777 sqlite3/
chmod 777 user.db
4.移植到linux时,提示:gethostName:: Success
解决:修改boa.conf
将 #ServerName www.your.org.here
改为:ServerName www.your.org.here
5.当cgi服务程序调用linux的系统命令是,要使用命令时,需要执行命令的路径而不能直接使用该命令。例如掉用ls时不能直接使用ls,而需要执行ls的路径 /bin/ls
6.如果要使用c语言的框架,可以使用cgic。不使用也可以参考里面的一些写法。