- BOA
2.编译安装boa
2.1 下载解压boa-0.94.13.tar.gz(www.boa.org)
2.2 在src 目录下运行./configure
2.3 修改Makefile
CC = arm-linux-gcc
CPP = arm-linux-gcc–E
2.4 将boa.c 文件中以下几行判断去掉
if ( setuid ( 0 ) != - 1 ) {
DIE ( “icky Linux kernel bug!” );
}
2.5 修改文件compat.h P120
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
2.6 把src 文件夹下的config.c 里的if(!server_name){…} (大概在266 行到286 行之间)注释掉
否则Error :gethostbyname:: Resource temporarily unavailable
2.7 修改 src/log.c
注释掉
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE(“unable to dup2 the error log”);
}
否则Error:log.c:73 unable to dup2 the error log:bad file descriptor
2.8 chmod 777 boa
2.9 自动启动boa :在/etc/profile 中启动boa
2.10 make && arm-linux-strip boa 去掉调试信息
可以编译出boa 可执行文件,下面是对文件系统的修改
2.11 建立/etc/boa/boa.conf 可以从boa 源码里拷贝boa.conf
2.12 修改boa.conf 文件
2.13 编译烧录cramfs
1.用户可以根据自己需要,对boa.conf 进行修改,但必须要保证其他的辅助文件和设置必须和boa.conf 里的配置相符,不然Boa 就不能正常工作。
2.在上面的例子中,
我们还需要创建日志文件所在目录/mnt/log/boa ,
创建HTML 文档的主目录/mnt/www ,
将mime.types 文件拷贝 到/etc 目录,
创建CGI 脚本所在目录/var/mnt/cgi-bin/ ,
mime.types 文件用来指明不同文件扩展名对应的MIME 类型,一般 可以直接从Linux 主机上拷贝一个,大部分也都是在主机的/etc 目录下,
etc 目录里还要有passwd group mime.types 等文件,
可执行文件boa 放在/bin 下面,
- CGIC
1.1 下载并解压 tar -zxvf cgic205.tar.gz(http://www.boutell.com/cgic/)
1.2 修改并配置
cd cgic205
修改Makefile 文件
a. 找到CC=gcc ,将其改成CC=arm-linux-gcc ,
b. 找到AR=ar ,将其改成AR=arm-linux-ar ,
c. 找到RANLIB=ranlib ,将其改成RANLIB=arm-linux-ranlib 。
e. 找到gcc cgictest.o -o cgictest.cgi ${LIBS} ,
将其改成$(CC) $(CFLAGS) cgictest.o -o cgictest.cgi ${LIBS} ,
f. 找到gcc capture.o -o capture ${LIBS} ,
将其改成$(CC) $(CFLAGS) capture.o -o capture ${LIBS} ,
1.3 测试CGCI
将capture 和cgictest.cgi 拷贝到主机的/var/www/cgi-bin 目录下。
在工作站的浏览器地址栏输入http://192.168.0.12/cgi-bin/cgictest.cgi ,可以看到页面,CGIC 库和测试脚本都移植成功。
将.cgi 文件拷贝至目标板上后,必须改变其权限chmod 755 *
否则,上位机浏览时会提示
502 Bad Gateway
The CGI was not CGI / 1 . 1 compliant .
不能上传的话,把GET 改成POST
把用户权限由 nobody 改成 root
1.4 CGI简介
CGI全称Common Gateway Interface,是一种编程接口,不论什么语言,只要按照该接口的标准编写出来的程序,即可叫做 CGI 程序。CGI 程序的输入/输出是使用编程语言的标准输入 / 标准输出,所以用 C/C++ 来写 CGI 程序就好象写普通程序一样,不过还有几样东西要注意的。
CGI 程序的通信方式 :
当有数据从浏览器传到 Web 服务器后,该服务器会根据传送的类型(基本有二类: GET/POST ),将这些接收到的数据传入 QUERY_STRING或 变量中, CGI 程序可以通过标准输入,在程序中接收这些数据。当要向浏览器发送信息时,只要向 Web 服务器发送特定的文件头信息,即可通过标准输出将信息发往 Web 服务器, Web 服务器处理完这些由 CGI 程序发来的信息后就会将这些信息发送给浏览器。这样就是 CGI 程序的通信方式了。
接收数据 :
用 GET 方式接收到的数据保存在 Web 服务器的 QUERY_STRING 变量里,而通过 POST 方式接收到的数据是保存在 这个 Web 服务器变量里。它们的唯一区别就是:以 GET 方式接收的数据是有长度限制,而用 POST 方式接收的数据是没有长度限制的。并且,以 GET 方式发送数据,可以通过 URL 的形式来发送,但 POST 方式发送的数据必须要通过 Form 才到发送。