zoukankan      html  css  js  c++  java
  • boa安装

    Boa 下载地址:http://www.boa.org/boa-0.94.13.tar.gz

    1、解压生成Makefile

    tar xzf boa-0.94.13.tar.gz #解压

    cd boa-0.94.13/src #进入源代码文件夹

    ./configure #生成Makefile

    注:

    1、假设为嵌入式开发板编译需改动Makefile

    改动Makefile文件。找到CC=gcc,将其改成CC = arm-linux-gcc( arm-linux-gcc是3.3.2版的arm gcc编译器,

    假设是3.4.5版本号的gcc用:arm-softfloat-linux-gnu-gcc。当使用该版本号,本文其余地方都如此更改),

    再找到CPP = gcc –E,将其改成CPP = arm-linux-gcc –E,并保存退出。

    2、编译时会出现错误

    错误信息:

      debian:/home/a/sss/boa-0.94.13/src# make

      gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c

      util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token

      make: *** [util.o] Error 1

      解决方法:

      改动 src/compat.h

      找到

      #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

      改动成

      #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 

    改动log.c

       凝视掉

       if (dup2(error_log, STDERR_FILENO) == -1) {

       DIE("unable to dup2 the error log");

       }


    3、简单配置

    Boa须要在/etc文件夹下建立一个boa文件夹,里面放入Boa的主要配置文件boa.conf。在Boa源代码文件夹下已有一个演示样例boa.conf

    mkdir /etc/boa/

    cp boa-0.94.13/boa.conf /etc/boa/

    改动 ScriptAlias 项 为 :ScriptAlias /cgi-bin/ /var/www/cgi-bin/

    并加入 /var/www/cgi-bin 文件

    #监听的port号,缺省都是80。一般无需改动

    Port 80

    # bind调用的IP地址。一般凝视掉。表明绑定到INADDR_ANY。通配于server的全部IP地址

    #Listen 192.68.0.5

    #作为哪个用户执行。即它拥有该用户的权限。一般都是nobody(linux默认有),须要/etc/passwd中有nobody用户

    User nobody

    #作为哪个用户组执行。即它拥有该用户组的权限,一般都是nogroup(linux默认有)。须要在/etc/group文件里有nogroup组

    Group nogroup

    #很重要。HTML文档的主文件夹。

    假设没有以/開始,则表示从server的根路径開始。

    DocumentRoot /var/www

    #假设收到一个用户请求的话,在用户主文件夹后再添加的文件夹名

    UserDir public_html

    #HTML文件夹索引的文件名称,也是用户没有指定訪问文件夹时返回的文件名称

    DirectoryIndex index.html

    #很重要。指明CGI脚本的虚拟路径相应的实际路径。一般全部的CGI脚本都要放在实际路径里

    ScriptAlias /cgi-bin/ /var/www/cgi-bin/

    4、错误

    1.错误1: gethostbyname:: No such file or directory
    解决的方法: 改动boa.conf 去掉 ServerName www.your.org.here 前的凝视符号(#)
    2

    解决的方法: 改动boa.conf 去掉 ServerName www.your.org.here 前的凝视符号(#)

    2.错误1: util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o]
    解决的方法: 改动 src/compat.h
       找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
       改动成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
    3

    解决的方法: 改动 src/compat.h

       找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

       改动成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

    3.错误2: boa.c:211 - getpwuid: No such file or directory
    解决的方法: 改动src/boa.c
       凝视掉以下这段程序:
       if (passwdbuf == NULL) {
       DIE(”getpwuid”);
       }
       if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
       DIE(”initgroups”);
       }
       即改动为:
       #if 0
       if (passwdbuf == NULL) {
        DIE(”getpwuid”);
       }
       if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
       DIE(”initgroups”);
       }
       #endif
    4

    解决的方法: 改动src/boa.c

       凝视掉以下这段程序:

       if (passwdbuf == NULL) {

       DIE(”getpwuid”);

       }

       if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {

       DIE(”initgroups”);

       }

       即改动为:

       #if 0

       if (passwdbuf == NULL) {

        DIE(”getpwuid”);

       }

       if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {

       DIE(”initgroups”);

       }

       #endif

    4.错误3: boa.c:228 - icky Linux kernel No such file or directory
    解决的方法: 改动src/boa.c
       凝视掉以下语句:
       if (setuid(0) != -1) {
       DIE(”icky Linux kernel bug!”);
       }
       即改动为:
       #if 0
       if (setuid(0) != -1) {
       DIE(”icky Linux kernel bug!”);
       }
       #endif
    5

    解决的方法: 改动src/boa.c

       凝视掉以下语句:

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

       DIE(”icky Linux kernel bug!”);

       }

       即改动为:

       #if 0

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

       DIE(”icky Linux kernel bug!”);

       }

       #endif

    5.错误4: log.c:73 unable to dup2 the error log:bad file descriptor
    解决方法:
    方法1> 确定日志文件夹对与全部用户都具有可读/写的权限
    方法2> 改动src/log.c (建议採用方法1)
       凝视掉
       if (dup2(error_log, STDERR_FILENO) == -1) {
       DIE("unable to dup2 the error log");
       }
       即改动为:
       #if 0
    if (dup2(error_log, STDERR_FILENO) == -1) {
       DIE("unable to dup2 the error log");
       }
    #endif

    解决方法:

    方法1> 确定日志文件夹对与全部用户都具有可读/写的权限

    方法2> 改动src/log.c (建议採用方法1)

       凝视掉

       if (dup2(error_log, STDERR_FILENO) == -1) {

       DIE("unable to dup2 the error log");

       }

       即改动为:

       #if 0

    if (dup2(error_log, STDERR_FILENO) == -1) {

       DIE("unable to dup2 the error log");

       }

    #endif

    5、启动

    将boa boa_indexer 拷贝到/bin 文件夹下

    运行 boa 启动boa

    通过 ps aux | grep boa 查看boa是否启动。

    注:

    无法启动可能是port问题,尝试改动port

  • 相关阅读:
    Android view显示在软键盘上方
    ListView子项点击无反应的解决办法
    adb for mac
    Android文件的流操作工具类
    Linux之间配置SSH互信(SSH免密码登录)
    最简单的Linux虚拟机磁盘扩容方法
    Grunt + Bower—前端构建利器
    Microsoft Office 2016 简体中文 Vol 版镜像下载(Pro Plus、Visio、Project 下载)
    如何在windows下安装GIT
    如何在Crystal框架项目中内置启动MetaQ服务?
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5061900.html
Copyright © 2011-2022 走看看