zoukankan      html  css  js  c++  java
  • 搭建boa服务器

    1、下载Boa Webserver的源码

    http://www.boa.org/

    2、解压并编译Boa Webserver

    $ tar zxvf boa-0.94.13.tar.gz

    由于Boa Webserver的Makefile中没有install,我们只是进行编译,然后手动拷贝编译后的二进制文件到相应的文件目录中,因此在使用configure时无须指定位置。同时在make时,可能会出现不少错误,部分的错误处理方法可以参看<附录>:

    $ cd boa-0.94.13/src/

    $ ./configure

    $ apt-get install bisonflex   否则会出现错误提示

     

    修改 src/compat.h 两处地方 ,否则会出现错误提示 

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

    修改成#defineTIMEZONE_OFFSET(foo)(foo)->tm_gmtoff

     

    若要修改配置文件boa.conf的存放位置,假设修改为"/web",则需修改defines.h

    #define SERVER_ROOT "/etc/boa"

    修改成 #define SERVER_ROOT "/web" 

     

    $ make

    3、配置Boa Web server环境

     

    目录结构如下:

    /web             存放html文件

    /web/cgi-bin     存放cgi文件

    /etc/boa        存放boa.conf

    /bin            存放boa和boa_indexer

     

    boa.conf 缺省配置:

    User nobody

    Group nogroup

    DirectoryIndex index.html

    CGIPath /bin:/usr/bin:/usr/local/bin

    MimeTypes /etc/mime.types

    ErrorLog/var/log/boa/error_log

    AccessLog /var/log/boa/access_log

     

    boa.conf 改动配置:

    User 0

    Group 0

    #DirectoryMaker /usr/lib/boa/boa_indexer#注释掉,提高访问速度

    #ErrorLog /var/log/boa/error_log  #注释掉,关闭错误日志

    #AccessLog /var/log/boa/access_log #注释掉,关闭访问日志

    DocumentRoot/web                    #存放index.html

    ScriptAlias /cgi-bin//web/cgi-bin/  #存放cgi文件

    boa.conf 添加配置:

    AddType text/plain  txt

    AddType image/gif  gif

    AddType text/html  html

    AddType text/html  htm

    AddType text/xml   xml

    AddType image/jpeg  jpe

    AddType image/jpeg  jpeg

    AddType image/jpeg  jpg

    AddType image/x-icon  ico

    编译后在boa-0.94.13/src/中有2个二进制文件,那就是我们需要的执行档,只需拷贝到/bin中,注意这里的操作权限:

     

    $ sudo cp boa/boa-0.94.13/src/boa /bin

    $ sudo cp boa-0.94.13/src/boa_indexer /bin

    $ ls /bin/boa*

    /bin/boa /bin/boa_indexer

     

    BoaWebserver的配置文件是boa.conf。该文件需要被放置在/etc/boa目录下。同时我们需要对boa.conf稍做修改,注意一定是在/etc/boa下的boa.conf进行修改:

    # sudo mkdir /etc/boa

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

    # gedit /etc/boa/boa.conf

     

    a)【可选配置】找到Group nogroup修改为Group 0; user nobody修改为user 用户名;

    修改Group的参数为0是因为系统中没有nogroup组,如果你没有nobody用户,那么Usernobody也要做相应修改(修改成自己的用户名亦可)。其它采用默认设置。如有必要,可以参看<附录>中的参数说明。

    b)【可选配置】servername www.your.org.here的注解去掉;

    c)修改DocumentRoot后的路径为 /web,这个是文档的主目录;

    d)找到ScriptAlias /cgi-bin/ /usr/lib/cgi-bin

      修改为ScriptAlias /cgi-bin/ /web/cgi-bin

    e)【可选配置】修改MimeTypes /etc/mime.types为MimeTypes/web/mime.types来指明mime.types文件位置。如果没有以/开始,则表示从服务器的根路径开始。可以注释掉,避免使用mime.types文件,此时需要用AddType在本文件里指明。

     

    若开启日志功能(boa.conf的缺省配置) 

    建立日志目录【目录/var/log/boa是相关的日志文件保存目录。】:

    # mkdir -p /var/log/boa

     

    目录/web/用于保存HTML文档,而/web/cgi-bin用于保存CGI脚本。

    4、测试

    编写cgi测试代码:

    int main(void)
    {
          printf("Content-type:text/html
    
    "); //这句一定要加上
          printf(" Hello,world.");
          exit(0);
    }

    $gcc -o test.cgi test.c

    在测试之前,需要先运行Boa Webserver。

    $sudo boa

    注意这里使用的是root权限,如果是普通用户可能会有报错。

    # ps -aux 查看boa进程已经启动

     

    然后打开浏览器,输入http://192.168.1.194/cgi-bin/test.cgi就可以看到cgi测试效果。

    当然192.168.1.194是本机地址。可以使用ifconfig命令查看ip地址。然后输入也可以达到一样的效果。

    # ifconfig

    常见错误

    错误1:

    request.c: In function ‘get_request’:

    request.c:84: warning: pointer targets in passing argument 3 of‘accept’ differ in signedness

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

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

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

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

    util.c:100:1: error: pasting "t" and "->" doesnot 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


    错误2:

    [17/Aug/2013:09:28:17 +0000] boa.c:226 - icky Linux kernel bug!: Success
    解决办法:注释掉boa.c的226行


    参考文档:http://blog.sina.com.cn/s/blog_488fd1fa0100t7ch.html

  • 相关阅读:
    十个MySQL常用函数
    写给三十岁的自己
    EJS 模板引擎
    发送HTTP请求(GET,POST)
    路由模块化
    原生NodeJS封装Express路由
    Hook简介
    State Hook (useState)
    Effect hooks
    useContext
  • 原文地址:https://www.cnblogs.com/chengliu/p/3636373.html
Copyright © 2011-2022 走看看