webserver—BOA和CGIC移植ZYNQ_LINUX过程

12 篇文章 5 订阅

linux下最常用的web服务器:Apache。开源。 嵌入式web服务器主要有:lighttpd、thttpd、shttpd、BOA等
CGI : Common Gate Intetgace 是一段运行在web服务器上的程序,提供同客户端html页面的接口。
CGIC:是一个支持CGI开发的开放源码的标准C库,目的帮助用户进行大量字符串处理。

对比了一下:决定使用BOA,资料教程也比较多。

第一部分 移植BOA

https://blog.csdn.net/hnxyxiaomeng/article/details/85993285 参考了这篇文章。

一、从http://www.boa.org/下载Boa源码,将其解压并进入源码目录的src子目录。

tar -zxvf boa-0.94.13.tar.gz 
cd boa-0.94.13/src
//生成Makefile文件
./configure

二、修改Makefile文件

a.找到CC=gcc,将其改成CC = arm-linux-gnueabihf-gcc,
b.找到CPP = gcc –E,将其改成CPP= arm-linux-gnueabihf-gcc –E, 保存退出。

三、编辑src下的compat.h和src/boa.c文件

在compat.h的大概120行处
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 改为
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff

在src/boa.c中

注释掉下面语句:

if(setuid(0) != -1) {

DIE(”icky Linux kernel bug!”);

}

即修改为:

#if 0

if(setuid(0) != -1) {

DIE(”icky Linux kernel bug!”);

}

#endif

四、编译

make
arm-linux-gnueabihf-strip boa  //减小可执行文件的大小

五、修改/etc/boa下的boa.conf文件

User(48行)默认nobody,改为0
Group(49行)默认nogroup,改为0
#ServerName www.your.org.here (90行左右) 去掉#
再修改下图所示4个地方,即把 log/boa 修改为 log_boa。这里是因为我的zynq_linux会自动在相同路径下创建同名文件,不改的话有冲突。
在这里插入图片描述

六、拷贝到zynq开发板

将生成的boa可执行程序(在/src目录下)拷贝到开发板的/bin目录下,在开发板/etc目录下建boa目录,将boa.conf拷贝到板子的/etc/boa目录。

创建日志文件所在目录/var/log_boa,创建HTML文档的主目录/var/www,创建CGI脚本所在目录/var/www/cgi-bin/,在/var/www中放置一个index.html文件。上述目录若不存在,均需手动创建,这些都是boa运行需要的目录。index.html就是打开网址时的网页。

将虚拟机/etc目录下的mime.types文件到开发板/etc目录。

七、运行boa

在zynq上执行 /bin/boa ,即可运行起来web服务器,可通过topps命令确定。

打开电脑上的浏览器,输入开发板的IP地址(10.113.214.205)即可看到之前放入的index.html的内容。如下图。

如果有问题,上述过程确没有提示任何错误。可查看zynq开发板的/var/log_boa/error_log来分析。
在这里插入图片描述

第二部分 测试CGI

https://blog.csdn.net/hnxyxiaomeng/article/details/86029449参考了这篇文章。

一、创建一个test.c文件,内容如下

#include <stdlib.h>
#include <stdio.h>
int main()
 {
    printf("Content-type: text/html\n\n") ;
    printf("\n") ;
    printf("CGI Output\n") ;
    printf("\n") ;
    printf("Hello, world.\n") ;
    printf("\n") ;
    printf("\n") ;
    exit(0) ;
    return 1;
}

二、编译

arm-linux-gnueabihf-gcc -o test.cgi test.c

三、拷贝到 ZYNQ开发板

将生成的test.cgi拷贝到移植Boa时在开发板文件系统中建立的/var/www/cgi-bin中,并修改文件权限为777。

在/etc/boa/boa.conf中找到ScriptAlias(最后一行)
本来为:ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
修改为:ScriptAlias /cgi-bin/ /var/www/cgi-bin/

四、验证

打开网页,http://10.113.214.205/cgi-bin/test.cgi, 即可看到test.c中输出的字符串。
在这里插入图片描述

第三部分 移植CGIC

一、从github下载CGIC源码,解压。

二、修改Makefile文件。

CC=arm-linux-gnueabihf-gcc
AR=arm-linux-gnueabihf-ar
RANLIB=arm-linux-gnueabihf-ranlib
$(CC) $(CFLAGS) cgictest.o -o cgictest.cgi ${LIBS}
$(CC) $(CFLAGS) capture.o -o capture ${LIBS}

更改完的Makefile如下图:
在这里插入图片描述

三、编译

make

生成了CGIC库libcgic.a。还有capture调试程序、cgitest.cgi测试程序用来验证生成CGIC库的正确性。

四、拷贝到 ZYNQ开发板

将libcgic.a拷贝到开发板的/lib文件夹下,将capture和cgictest.cgi拷贝到开发板的/var/www/cgi-bin目录下,并修改capture和cgictest.cgi的权限为777。

五、验证

在Windows的浏览器地址栏输入10.113.214.205/cgi-bin/cgictest.cgi,可以看到页面,CGIC库和测试脚本都移植成功。该页面中含有CGIC的常用控件,通过分析代码可看出怎么使用控件。如下图:在这里插入图片描述

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在嵌入式Linux上使用boacgi来浏览文件目录,您需要按照以下步骤进行操作: 1. 安装boacgi: 在Linux中,您可以使用以下命令来安装boacgi: ``` sudo apt-get install boa sudo apt-get install libcgi-pm-perl ``` 2. 配置boa服务器: 在嵌入式Linux上,您需要编辑boa服务器的配置文件,以便它可以正确地运行cgi脚本。默认情况下,boa服务器配置文件位于/etc/boa/boa.conf。您需要确保以下配置项已启用: ``` server.modules = ("mod_cgi") ``` 并且以下行被注释掉: ``` #cgi.assign = ( ".cgi" => "/usr/bin/perl" ) ``` 3. 创建cgi脚本: 您可以使用Perl或其他脚本语言来编写cgi脚本,以便在boa服务器上运行。以下是一个示例Perl脚本,它将显示当前目录中的所有文件和子目录: ``` #!/usr/bin/perl use CGI qw(:standard); print header, start_html('File Browser'), h1('File Browser'), "<ul>\n"; opendir(DIR, "."); while ($file = readdir(DIR)) { next if ($file =~ m/^\./); if (-d $file) { print "<li><a href=\"$file/\">$file/</a></li>\n"; } else { print "<li><a href=\"$file\">$file</a></li>\n"; } } closedir(DIR); print "</ul>\n", end_html; ``` 4. 将cgi脚本复制到boa服务器的cgi-bin目录中: 默认情况下,boa服务器的cgi-bin目录位于/var/www/cgi-bin。将您的cgi脚本复制到此目录中。 5. 启动boa服务器: 您可以使用以下命令启动boa服务器: ``` sudo /etc/init.d/boa start ``` 现在,您可以在浏览器中输入嵌入式Linux的IP地址和端口号(默认为8888),然后浏览您的文件目录。例如,如果您的嵌入式Linux的IP地址为192.168.1.100,则可以在浏览器中输入http://192.168.1.100:8888/cgi-bin/your-script.cgi来运行您的cgi脚本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ta o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值