正点原子IMX6ULL开发板移植BOA(web服务器)

打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

正点原子IMX6ULL开发板移植BOA(web服务器)

boa简介:其可实行代码只有大约 60KB 左右, Boa 是一个单使命的 HTTP 服务器, Boa 只能依次完成用户的请求,Boa 支持 CGI。Boa 的计划目标是速度和安全。Boa 的主要计划目标是速度和安全性。安全性在“不能被恶意用户破坏”的意义上,不是“细粒度访问控制和加密通信”。

下载Boa源码

版本: -0.94.13
下载地点: http://www.boa.org/
解压方式: tar -xvf boa-0.94.13.tar.gz

生成Makefile文件:

进入解压后源码目次下的src:
   cd boa-0.94.13/src/
  在源码目次下配置与编译
   ./configure
  这是根据 configure.in 文件进行一系列的配置,生成 config.status,configure,和 Makefile 文件。
如果无法实行,思量权限,修改该目次下的 configure 的属性为可实行 chmod 755 configure。

修改Makefile文件:

1.安装 bison flex

  1. sudo apt-get install bison
  2. sudo apt-get install flex
  3. make
复制代码
2.修改src/compat.h

  1. 修改前:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
  2. 修改后:#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
复制代码
3.修改src/boa.c

  1. #if 0
  2. if (passwdbuf == NULL) {
  3.             DIE("getpwuid");
  4.         }
  5. #endif        
  6.         .....
  7. #if 0        
  8. >if (setuid(0) != -1) {
  9. DIE("icky Linux kernel bug!");
  10. }
  11. #endif
  12. ....
复制代码
4.修改 src/config.c

  1. ...
  2. #if 0
  3. if (mime_types) {
  4.         temp = normalize_path(mime_types);
  5.         free(mime_types);
  6.         mime_types = temp;
  7.     }
  8. #endif   
  9. ....
复制代码
5.修改src/defines.h

  1. 修改前:#define SERVER_ROOT "/etc/boa"
  2. 修改后:#define SERVER_ROOT "/boa"
复制代码
如许 boa 步调启动时会在/boa 目次下寻找 boa.conf 配置文件,而且将/boa 文件夹作为服务器的根目次。

make 编译源码

完成之后在src文件下进行make编译源码

创建Boa文件夹:

在开发板的根文件中创建文件夹:
  1. mkdir boa
  2. mkdir boa/www
  3. mkdir boa/cgi-bin
  4. mkdir boa/log
复制代码
将需要的文件复制到开发板/boa目次中
   将 boa-0.94.13/src 目次下生成的 boa、 boa_indexer 二进制文件复制到/boa
将 boa-0.94.13 目次下的 boa.conf 文件复制到/boa
将/etc/mime.types 复制到/boa 目次下(留意:是在ubuntu中寻找,如果没有在提供的文件中复制)
  修改配置文件 boa.conf

重新指定一些文件的生成路径,由于重新指定这些路径后会资助我们深刻的理解关于 boa 服务器
的工作机制,打开 boa.conf,删除其他内容,写入以下内容:
  1. Port 80
  2. User 0
  3. Group 0
  4. ErrorLog boa/log/error_log
  5. AccessLog /boa/log/access_log
  6. ServerName 192.168.1.101
  7. DocumentRoot /boa/www
  8. DirectoryIndex index.html
  9. DirectoryMaker /boa/boa_indexer
  10. MimeTypes /boa/mime.types
  11. ScriptAlias /cgi-bin/ /boa/cgi-bin/
复制代码
此时,还要复制文件boa.conf到开发板的/etc文件夹(不确定是否是必要的步调)。

添加测试文件

参考华清远见的代码:
( 1) index.html ,将 index.html 放在/boa/www 目次下,添加一张图片到当前的目次下,命名为image.jpg。
  1. sudo cp index.html image.jpg /boa/www
  2.         <html>
  3.                 <body>
  4.                         <h3>this is a test!</h3><br/>
  5.                         <img src="image.jpg"/>
  6.                         <h3>tree picture</h3><br/>
  7.                         <a href="/cgi-bin/test.cgi">to cgi page</a> //指定了 cgi 可执行文件存放的路径,默认从/boa 的根目录开始查找
  8.                 </body>
  9. </html>
复制代码
( 2) test.c, 使用arm-linux-gnueabihf-gcc对 test.c 进行交织编译,生成 test.cgi,后缀为 cgi 的类型,编译后得到的 test.cgi 放在/boa/cgi-bin 目次下,当然可以直接复制提供的文件。
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         printf("Content-type:text/html\n\n"); //这句一定要加上
  5.         printf("<html><body>");
  6.         printf("<font style="color:red; font-size:30px;">Hello,CGI!</font><br/>");
  7.         printf("<a href="/index.html">return index.html</a>");
  8.         printf("</body></html>");
  9.         return 0;
  10. }
复制代码

/boa 目次下所有的文件:

修改后的文件目次如下:

测试效果

在测试之前需要释放开发板上端口80,在正点原子开发板上80端口已经被nginx占用。
  1. nginx -s stop          //关闭
  2. netstat -ntulp | grep 80  // 查看 端口使用情况
  3. kill -9 pid                //杀死进程
复制代码
释放80端口后,进入/boa 目次,使用./boa 来运行 boa 服务器,在浏览器中输入 http://开发板地点:80/便可访问到默认的页面 index.html。
  1. http://192.168.1.200:80
  2. http://localhostip:port
复制代码

文件下载

链接:https://pan.baidu.com/s/1OFP-xQOcE2Yp0op_SQ0eLQ?pwd=tn16
提取码:tn16

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表