前期准备
- 下载boa-0.94.13.tar.gz
- 配置开发板对应的交叉编译链
编译boa
- 安装工具apt-get install bison,apt-get install flex,已安装可忽略
- 输入命令 ./configure --host=arm-linux
- 修改Makefile,vim Makefile,设置参数CC=arm-none-linux-gnueabi-gcc,CPP=arm-none-linux-gnueabi-gcc -E (根据自己的交叉编译链设置)
- vim compat.h,把以下语句
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
改为
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
vim log.c,注释下面语句
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}
vim boa.c,注释以下语句
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
-
编译make,编译完成后会在当前目录下生成一个boa文件,使用arm-none-linux-gnueabi-strip boa为boa瘦身 (非必要,可以根据自身需要)
-
配置boa-0.94.13/下的boa.conf文件,vim boa.conf,设置参数如下
(1)Group 0
(2)User 0
(3)ScriptAlias /cgi-bin/ /var/www/cgi-bin/
(4)DoucmentRoot /var/www
(5)把#ServerName www.your.org.here的注释去掉
(6)ErrorLog /var/log/boa/error_log
(7)AccessLog /var/log/boa/access_log -
配置开发板环境,以下命令在开发板终端中输入
#mkdir /etc/boa
#mkdir /var/www/cgi-bin/
#mkdir /var/log/boa/
(根据boa.conf设置)
移植boa
- 下载编译好的boa到开发板的/usr/bin
- 下载配置好的boa.conf到开发板的/etc/boa下
- 复制ubuntu下的/etc/mime.types到开发板的/etc下
测试boa
- 把测试的index.html放到开发板的/var/www下,在浏览器输入开发板IP地址即可成功访问到index.html网页
- 测试cgi,写一个测试程序test.c如下
#include<stdio.h>
void main(void)
{
printf("Content-Type:text/html;charset=gb2312\n\n");
printf("<html>\n");
printf("<head>\n");
printf("</head>\n");
printf("<body>\n");
printf("<p>Hello World!</p>");
printf("</body>\n");
printf("</html>\n");
}
使用交叉编译器编译arm-none-linux-gnueabi-gcc test.c -o test.cgi -static,下载到板子的/var/www/cgi-bin下,通过IP+/cgi-bin/test.cgi,可访问cgi程序,正常会打印出Hello World!
(关于cgi中无法显示中文,可以更改charset=gb2312为charset=utf-8)