zoukankan      html  css  js  c++  java
  • 在嵌入式Linux系统(OK6410)中移植Boa 服务器

    OK6410的Boa服务器移植:

    <一> Boa的编译

    1. 从 www.boa.org 下载 Boa 服务器的最新版:boa-0.94.13.tar.gz。

    2. 解压:tar xzf boa-0.94.13.tar.gz

    3. 进入解压后的文件夹 boa-0.94.13内部的 src文件夹,对源文件进行如下修改

    1     由于arm-linux-gcc 编译器版本过高,对语法的支持有一些改变,所以需要修改compat.h中的
    2      #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
    3 为:
    4 
    5      #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
    6 不然在编译的时候会提示如下错误:
    7     util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1
    View Code
     1 将boa.c 文件225-227三行的文件注释掉
     2  if (setuid(0) != -1) {
     3                         DIE(”icky Linux kernel bug!”);
     4         }
     5  6 /*
     7          if (setuid(0) != -1) {
     8                         DIE(”icky Linux kernel bug!”);
     9                 }
    10 */
    11 
    12 ,否则,但以root权限启动boa服务器的时候,会出现以下错误:boa.c:226 - icky Linux kernel bug!: 
    View Code

    4. 然后生成Makefile:./configure

    5. 修改生成的Makefile:默认生成的Makefile针对x86平台,我们的目标是针对嵌入式平台,所以需要修改编译器.

    1 更改Makefile的31行和32行:
    2 CC = gcc 
    3 CPP = gcc -E
    4 更改为
    5 CC = arm-linux-gcc
    6 CPP = arm-linux-gcc -E
    更改Makefile

    6. 在当前目录下编译Boa源文件: make

    7. 将生成好的boa可执行文件去掉冗余信息: arm-linux-strip boa. 如下图为strip 前后boa的大小对比。

    <二> 将Boa移植到OK6410中

    1. 修改boa.conf配置文件:

     1 (1) 修改25行的port端口,用来设置服务器监听的端口:
     2 # Port: The port Boa runs on.  The default port for http servers is 80.
     3 # If it is less than 1024, the server must be started as root.
     4 
     5 Port 80
     6 (2) 注释43行的监听IP地址:默认监听该主机上的所有IP地址
     7 #Listen 192.68.0.5
     8 (3) 修改53、54行的user和Group 启动的UID和GID,使其以root身份启动
     9 #  User: The name or UID the server should run as.
    10 # Group: The group name or GID the server should run as.
    11 
    12 User root
    13 Group root
    14 (4) 修改116行的DocumentRoot地址,即客户端要显示的HTML页面存放位置
    15 # DocumentRoot: The root directory of the HTML documents.
    16 # Comment out to disable server non user files.
    17 
    18 DocumentRoot /usr/local/boa
    19 (5) 修改输入网页输入主机IP时要显示的页面:这里设为index.html
    20  # DirectoryIndex: Name of the file to use as a pre-written HTML
    21 # directory index.  Please MAKE AND USE THESE FILES.  On the
    22 # fly creation of directory indexes can be _slow_.
    23 # Comment out to always use DirectoryMaker
    24 
    25 DirectoryIndex index.html
    26 (6) 修改CGI程序存放的位置:以http://IP/cgi-bin/cginame 的方式运行cgi 程序时将在/usr/local/boa/cgi-bin 目录下寻找该程序
    27 # ScriptAlias: Maps a virtual path to a directory for serving scripts
    28 # Example: ScriptAlias /htbin/ /www/htbin/
    29 
    30 ScriptAlias /cgi-bin/ /usr/local/boa/cgi-bin/

    2. 将配置文件boa.conf 移动到OK6410的 /etc/boa/ 目录下。

    3. 创建/var/log/boa/ 目录,这样Boa服务器启动时会在该目录下创建日志文件。

    4. 将Linux系统上/etc/mime.types 文件复制到OK6410的/etc 目录下,否则Boa服务器启动不起来。

    5. 将生成的boa文件移植到嵌入式板中的/sbin目录下并更改脚本文件 /etc/init.d/rcS, 新增一行: /sbin/boa ,确保boa服务器随系统上电自启动。

    这里一定要注意:有时候boa服务器并不能随系统启动,运行 /sbin/boa 命令会提示:
    gethostbyname:: Success
    这种情况下要修改boa.conf 文件
        将
    #ServerName  www.your.org.here
        改为      
    ServerName  www.your.org.here
    即去掉注释即可
    

     <三> 测试Boa服务器:

    1. 静态页面测试:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>Boa 静态网页测试</title>
     6 </head>
     7 
     8 <body>
     9     <h1>  Welcome to Boa sever! </h1>
    10 </body>
    11 </html>

    2. CGI  程序测试:

     1 #include <stdio.h>
     2 int  main()
     3 {
     4     printf("Content-type: text/html
    
    ");
     5     printf("<html>
    ");
     6     printf("<head>
    ");
     7     printf("<title>CGI Output</title>
    ");
     8     printf("</head>
    ");
     9 
    10     printf("<body>");
    11     printf("<h1> Hello, world. </h1>");
    12     printf("</body>");
    13     printf("</html>
    ");
    14    return 0;
    15 } 

    至此,Boa服务器移植完成。

  • 相关阅读:
    error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
    unity官方换装教程Character Customization 学习笔记
    python中执行os.system(),程序处于堵塞状态,debug报pydev debugger: process 11152 is connecting
    python中安装pywinauto成功,执行时报如下错误的解决办法
    jmeter之Ramp-up Period(in seconds)
    jmeter之HTTP信息管理器、正则表达式联合使用(获取登录session
    linux之crontab定时器
    python之删除指定目录指定日期下的日志文件
    python2含有中文路径报错解决办法[xe4xbfxa1xe6x81xaf]
    性能测试之指标参考标准
  • 原文地址:https://www.cnblogs.com/chenchenluo/p/3576129.html
Copyright © 2011-2022 走看看