linux下的webserverBOA及CGIC库的使用指南

上传人:平*** 文档编号:15579286 上传时间:2017-11-05 格式:DOC 页数:62 大小:104.75KB
返回 下载 相关 举报
linux下的webserverBOA及CGIC库的使用指南_第1页
第1页 / 共62页
linux下的webserverBOA及CGIC库的使用指南_第2页
第2页 / 共62页
linux下的webserverBOA及CGIC库的使用指南_第3页
第3页 / 共62页
linux下的webserverBOA及CGIC库的使用指南_第4页
第4页 / 共62页
linux下的webserverBOA及CGIC库的使用指南_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《linux下的webserverBOA及CGIC库的使用指南》由会员分享,可在线阅读,更多相关《linux下的webserverBOA及CGIC库的使用指南(62页珍藏版)》请在金锄头文库上搜索。

1、业精于勤,荒于嬉;行成于思,毁于随linux 下的 webserver BOA 及 CGIC 库的使用指南 我把网页挂载到 nfs 下面的文件中(需要新建一个文件 www ),不过这样很方便!安装过程=1 )在 www.boa.org 下载 boa-0.94.13.tar.gz 并解压# tar -zxvf boa-0.94.13.tar.gz2 )在 src 目录下运行./configure3 )生成 Makefile 文件,修改CC = arm-linux-gccCPP = arm-linux-gccE(1) 将 boa.c 文件中以下几行判断去掉即可。if ( setuid ( 0 )

2、!= - 1 ) DIE ( icky Linux kernel bug! ); (2)修改文件 compat.h P120#define TIMEZONE_OFFSET(foo) foo#-tm_gmtoff修改成#define TIMEZONE_OFFSET(foo) (foo)-tm_gmtoff(3)把 src 文件夹下的 config.c 里的 if(!server_name).(大概在 266 行到 286 行之间)注释掉否则Error :./boagethostbyname: Resource temporarily unavailable(4) 修改 src/log.c注释掉i

3、f (dup2(error_log, STDERR_FILENO) = -1) DIE(unable to dup2 the error log);否则会出现错误:log.c:73 unable to dup2 the error log:bad file descriptor改变板子的属性,为可写:执行一个命令就可以变成可写的 好象是chmod 777自动启动 boa :在/etc/profile 中启动 boa 即可4 ) make5 )执行 arm-linux-strip boa去掉调试信息,小很多,50 多 k可以编译出 boa 可执行文件,下面是对文件系统的修改(1 )建立/etc/

4、boa/boa.conf 可以从 boa 源码里拷贝 boa.conf(2 )修改 boa.conf 文件,以下为转载*# 监听的端口号,缺省都是 80 ,一般无需修改Port 80# bind 调用的 IP 地址,一般注释掉,表明绑定到INADDR_ANY ,通配于服务器的所有 IP 地址#Listen 192.68.0.5User 0Group 0# 当服务器发生问题时发送报警的 email 地址,目前未用,注释掉#ServerAdmin rootlocalhost # 错误日志文件。如果没有以/ 开始,则表示从服务器的根路径开始。如果不需要错误日志,则用#/dev/null 。在下面设置

5、时,注意一定要建立/var/log/boa 目录ErrorLog /mnt/log/boa/error_log# 访问日志文件。如果没有以/ 开始,则表示从服务器的根路径开始。如果不需要错误日志,则用#/dev/null 或直接注释掉。在下面设置时,注意一定要建立/var/log/boa 目录#AccessLog /var/log/boa/access_log# 是否使用本地时间。如果没有注释掉,则使用本地时间。注释掉则使用 UTC 时间#UseLocaltime# 是否记录 CGI 运行信息,如果没有注释掉,则记录,注释掉则不记录#VerboseCGILogs# 服务器名字ServerNam

6、e # 是否启动虚拟主机功能,即设备可以有多个网络接口,每个接口都可以拥有一个虚拟的 Web 服# 务器。一般注释掉,即不需要启动#VirtualHost# 非常重要,HTML 文档的主目录。如果没有以 / 开始,则表示从服务器的根路径开始。DocumentRoot /var/www# 如果收到一个用户请求的话,在用户主目录后再增加的目录名UserDir public_html#HTML 目录索引的文件名,也是没有用户只指明访问目录时返回的文件名DirectoryIndex index.html# 当 HTML 目录没有索引文件时,用户只指明访问目录时,boa会调用该程序生成索引文件然后#

7、返回给用户,因为该过程比较慢最好不执行,可以注释掉或者给每个 HTML 目录加上 #DirectoryIndex 指明的文件#DirectoryMaker /usr/lib/boa/boa_indexer# 如果 DirectoryIndex 不存在,并且 DirectoryMaker 被注释,那么就用 Boa 自带的索引# 生成程序来生成目录的索引文件并输出到下面目录,该目录必须是 Boa 能读写# DirectoryCache /var/spool/boa/dircache# 一个连接所允许的 HTTP 持续作用请求最大数目,注释或设为 0都将关闭 HTTP 持续作用KeepAliveMa

8、x 1000#HTTP 持续作用中服务器在两次请求之间等待的时间数,以秒为单位,超时将关闭连接KeepAliveTimeout 10# 指明 mime.types 文件位置。如果没有以 / 开始,则表示从服务器的根路径开始。可以注释掉# 避免使用 mime.types 文件,此时需要用 AddType 在本文件里指明MimeTypes /etc/mime.types# 文件扩展名没有或未知的话,使用的缺省 MIME 类型DefaultType text/plain# 提供 CGI 程序的 PATH 环境变量值CGIPath /bin:/usr/bin:/usr/local/bin# 将文件扩展

9、名和 MIME 类型关联起来,和 mime.types 文件作用一样。如果用 mime.types# 文件,则注释掉,如果不使用 mime.types 文件,则必须使用#AddType application/x-httpd-cgi cgi# 指明文档重定向路径#Redirect /bar http:/elsewhere/feh/bar # 为路径加上别名Alias /doc /usr/doc# 非常重要,指明 CGI 脚本的虚拟路径对应的实际路径。一般所有的 CGI 脚本都要放在实际路径# 里,用户访问执行时输入站点+ 虚拟路径+CGI 脚本名ScriptAlias /cgi-bin/ /m

10、nt/www/cgi-bin/ 用户可以根据自己需要,对 boa.conf 进行修改,但必须要保证其他的辅助文件和设置必须和 boa.conf 里的配置相符,不然 Boa就不能正常工作。 在上面的例子中,我们还需要创建日志文件所在目录/mnt/log/boa ,创建 HTML 文档的主目录/mnt/www ,将 mime.types 文件拷贝 到/etc 目录,创建 CGI 脚本所在目录/var/mnt/cgi-bin/ 。mime.types 文件用来指明不同文件扩展名对应的 MIME 类型,一般 可以直接从 Linux 主机上拷贝一个,大部分也都是在主机的/etc 目录下。*我做的修改Do

11、cumentRoot /mnt/www www 目录,需手动建立ScriptAlias /cgi-bin/ /mnt/www/cgi-bin/ www/cgi-bin目录,需手动建立Group 0(3 )etc 目录里还要有 passwd group mime.types 等文件www 目录放 index.html 文件我把 passwd group mime.types 放在/etc 下面,boa.conf 放在/etc/boa 文件夹下 , 可执行文件 boa 放在 /bin 下面,文件系统新添加了 mnt ,把 www 和 cgi-bin 放进去,编译文件系统CRAMFS ,烧录(注:这

12、样烧录的话,文件都是只读的,可以把 1: /bin/mkdir /tmp/fs2:/bin/mount -t yaffs /dev/mtdblock/3 /tmp/fs;这样就 mount 上一个可读可写的文件,掉电还在;问题是:我mount 出错,有 bad block )(4 )在板子上运行 boa(5 )pc 机用 IE 访问 http:/192.168.3.223/index.html(2 )编辑 helloworld.c 程序测试 cgi 的运行#arm-linux-gcc -o helloworld.cgi helloworld.c#cp helloworld.cgi 到开发板的/

13、var/www/cgi-bin 目录下在 pc 机的浏览器地址栏输入 http:/192.168.0.12/cgi-bin/helloworld.cgi ,可以看到相关页面, CGI 脚本测试通过。10. 从 CGIC 的主站点 http:/ 下载源码,将其解压并进入源码目录 # tar -zxvf cgic205.tar.gz# cd cgic20511. 修改 Makefile 文件a. 找到 CC=gcc ,将其改成 CC=arm-linux-gcc ,b. 找到 AR=ar ,将其改成 AR=arm-linux-ar ,c. 找到 RANLIB=ranlib ,将其改成 RANLIB=

14、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 ,保存退出。12. 然后运行 make 进行编译,得到的 CGIC 库 libcgic.a ,我们通过调试辅助程序 capture 和测试程序 cgictest.cgi ,来验证生成CGIC 库的正

15、确性。13. 将 capture 和 cgictest.cgi 拷贝到主机的 /var/www/cgi-bin目录下。在工作站的浏览器地址栏输入 http:/192.168.0.12/cgi-bin/cgictest.cgi ,可以看到页面,CGIC 库和测试脚本都移植成功。 将.cgi 文件拷贝至目标板上后,必须改变其权限chmod 755 *否则,上位机浏览时会提示502 Bad GatewayThe CGI was not CGI / 1 . 1 compliant .(2 )不能上传的话,把 GET 改成 POST把用户权限由 nobody 改成 root用 C/C+ 写 CGI 程序 其实用 C/C+ 写 CGI 程序非常简单,主要是要清楚什么是CGI 。 CGI 全称 Common Gateway Interface (共同编程接口),是一种编程接口,不论什么语言,只要按照该接口的标准编写出来的程序,即可叫做 CGI 程序。 CGI 程序的输入 / 输出是使用编程语言的标准输入 / 标准输出,所以用 C/C+ 来写 C

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号