欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IMX6ULL移植boa web服务器

程序员文章站 2022-05-22 19:19:45
...

一、下载和安装
boa的官方网站为www.boa.org,在上面下载最新版本的boa,本文使用的是 boa-0.94.13.tar.gz。
1.1下载完成拷贝到ubantu下。
IMX6ULL移植boa web服务器1.2解压 boa-0.94.13.tar.gz。

tar -xvf boa-0.94.13.tar.gz

1.3进入boa-0.94.13

cd boa-0.94.13/

解压成功后得到如下文件
IMX6ULL移植boa web服务器
1.4进入src文件夹,执行configure文件生成Makefile文件:

cd src\
./configure

执行完上面的命令后,会在当前目录下生成 Makefile文件,如下图所示:
IMX6ULL移植boa web服务器
1.5修改Makefile文件

vi Makefile

在 Makefile文件里面找到“CC = gcc”这一行,如下图所示:
IMX6ULL移植boa web服务器

将这一行修改成“CC = arm-none-linux-gnueabihf-gcc -static”然后找到”CPP = gcc -E“这一行,如下图所示
IMX6ULL移植boa web服务器
把这一行修改成“CPP = arm-none-linux-gnueabihf-gcc -E -static”最后退出并保存 Makefile文件,接下来输入 make命令,开始编译 boa。
1.6修改boa.c文件

vi boa.c

找到如下代码

if (passwdbuf == NULL) {
             DIE(”getpwuid”);
            }
            if (initgroups(passwdbuf->pw_name,passwdbuf->pw_gid) == -1) {
            DIE(”initgroups”);
            }

将其修改为:

/*if (passwdbuf == NULL) {
             DIE(”getpwuid”);
            }
            if (initgroups(passwdbuf->pw_name,passwdbuf->pw_gid) == -1) {
            DIE(”initgroups”);
       }*/

1.6 make将会遇到如下问题:
问题1:

util.c: 在函数‘get_commonlog_time’中:
util.c:100:39: 错误:毗连“t”和“->”不能给出一个有效的预处理标识符
         time_offset = TIMEZONE_OFFSET(t);
compat.h:120:30: 附注:in definition of macro ‘TIMEZONE_OFFSET’
 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
 <builtin>: recipe for target 'util.o' failed
make: *** [util.o] Error 1

如图:
IMX6ULL移植boa web服务器
解决办法:根据提示修改源码中的src/compat.h文件。
修改:#define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff
为:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
然后保存并退出 compat.h,输入make,继续编译 boa.
可以使用 ll boa命令查看一下 boa文件的大小,如下图。
IMX6ULL移植boa web服务器
1.7接下来使用 arm-none-linux-gnueabi-strip boa命令为bos文件瘦身,如下图:
IMX6ULL移植boa web服务器

1.8p 命令拷贝编译最终生成的boa到 NFS文件系统的 bin目录下面,如下图所示。
IMX6ULL移植boa web服务器1.9统中/etc中建立boa文件夹,如图:
IMX6ULL移植boa web服务器
1.10 NFS文件系统的根目录下建立 www 文件夹,如下图。
IMX6ULL移植boa web服务器
1.12建立的 www目录下面建立文件夹 cgi-bin 目录,如下图。
IMX6ULL移植boa web服务器
1.13boa程序运行需要一个配置文件:boa.conf,在boa-0.94.13 目录下面有个默认的boa.conf文件,把它拷贝到 NFS文件系统的etc/boa目录下面,如下图
IMX6ULL移植boa web服务器
1.14然后拷贝虚拟机Ubuntu的/etc目录下的mime.types文件到NFS文件系统的etc目录下面,如下图所示。
IMX6ULL移植boa web服务器
1.15然后在 NFS文件系统的 etc目录下用命令vi group命令建立group 文件,如下图所示。
IMX6ULL移植boa web服务器
1.16然后在 group文件输入“root:*:0:”,添加root用户组,如下图所示。
IMX6ULL移植boa web服务器
1.17然后保存并退出。然后进到 NFS文件系统的 etc/boa目录,使用 vi boa.conf命令打开 boa.conf文件。
打开 boa.conf文件,找到“Groupnogroup”这一行,修改为

User 0
Group 0

如下图。
IMX6ULL移植boa web服务器
1.18然后找到“#ServerName www.your.org.here”这一行,修改为“ServerNamewww.your.org.here”,如下图所示。
IMX6ULL移植boa web服务器
1.19然后找到“DocumentRoot/var/www”这一行,修改为“DocumentRoot/www”(注意:这里的“/www”就是前面步骤使用mkdir 创建的www 目录),如下图所示。
IMX6ULL移植boa web服务器
1.20然后找到“ScriptAlias /cgi-bin//usr/lib/cgi-bin/”这一行,修改为“ScriptAlias /cgi-bin/ /www/cgi-bin/”,如下图所示。
IMX6ULL移植boa web服务器
1.21最后保存并退出 boa.conf,至此完成 boa.conf配置文件的修改。下面添加科技自动运行boa的脚本,打开 NFS文件系统的 etc/init.d/rcS文件,打开 etc/init.d/rcS 文件以后,定位到最后一行,然后在最后一行添加:

cd /bin
./boa &

如下图所示。
IMX6ULL移植boa web服务器
1.22然后保存并退出 etc/init.d/rcS。然后使用 cd www 命令,进入到前面创建的 www 目录,然后使用 vi index.html命令建立index.html文件,添加如下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>web</title>
<style type="text/css">
<!--
.STYLE1 {font-size: 36px}
body {
 background-color: #996600;
}
-->
</style>
</head>
<body>
<table width="613" height="424" border="0" align="center">
  <tr>
    <td colspan="2" align="center" valign="middle"><h2 class="STYLE1">Welcome to the world of the WEB</h2></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html>

然后保存并退出 index.html,至此基于boa的web 服务器就搭建完成了,上面创建的index.html是一个简单的网页,用于测试。现在启动开发板(开发板是挂载NFS网络文件系统),开发板起来以后输入 ps命令,可以看到 boa程序在运行,如下图。然后在 pc机器打开浏览器,输入开发板的 IP地址(192.168.0.215),可以看到在开发板上创建的 index.html,如下图所示。
IMX6ULL移植boa web服务器
至此 web 服务器搭建完成了

相关标签: web linux