3 . boa webserver服务器(1)

2017-08-13  本文已影响0人  wit_yuan

1 基本介绍

boa出现的年代还算比较久远,但是其cgi毕竟是始祖级别,研究一下还是有必要的。

1.1 源码

boa官方网站为:链接

1.2 源码解压

我们获取的源码为:boa-0.94.13.tar包:

$ tar -xf boa-0.94.13.tar

解压出文件后,我们在用压缩包命令,将文件压缩成.gz格式文件,方便在windows上使用source insight软件打开。

$ tar -czf boa-0.94.13.tar.gz *

2 环境搭建

首先需要安装上两个工具:

$ sudo apt-get install bison
$ sudo apt-get install flex

现在假设在boa的根目录位置,我的位置如下:

wityuan@ubuntu:~/Downloads/boa/boa-0.94.13$

后面的操作我简单的使用$代表在源码的根目录下操作的。

首先,需要修改文件内容:
修改文件src/compat.h:

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

改为:

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

然后操作:

$ cd src
$ ./configure --prefix=/home/wityuan/Downloads/boa/boa-0.94.13/tmp
$ make
$ sudo mkdir /etc/boa
$ sudo cp ../boa.conf /etc/boa

接着我们需要修改boa.conf文件的内容:

$ cd /etc/boa/

更改:

#Group nogroup
Group 0
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
#AccessLog /var/log/boa/access_log

其中,#表示注释,在文件内部,我们找到#后面的内容,然后加上#下面的内容即可。

我们还需要修改源码src/log.c中的内容,如下图所示:


修改log.c文件中的内容

现在可以运行程序了。

由于在boa.conf中我们的端口为80,所以在运行的时候要注意加上sudo。

$ cd src/
$ sudo ./boa
[13/Aug/2017:15:34:09 +0000] boa: server version Boa/0.94.13
[13/Aug/2017:15:34:09 +0000] boa: server built Aug 13 2017 at 08:32:36.
[13/Aug/2017:15:34:09 +0000] boa: starting server pid=17974, port 80
 

我们在/var/www/下写一个index.html的文件:

$ cd /var/www

文件内容为:

<html>
<head>
<meta charset="utf-8"/>
<title>Upload</title>
</head>
<body>
    <h2>wit_yuan say hello world</h2>
</body>
</html>

我的本机ip为192.168.1.16,所以在浏览器上,可以输入:

http://192.168.1.16/index.html

我们在浏览器上可以看到:


浏览器显示结果

我们可以执行cgi程序,命名c文件cgitest,程序如下:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
     printf("Content-type:text/html\n\n");
     printf("<html>\n");
     printf("<head><title>CGI Output</title></head>\n");
     printf("<body>\n");
     printf("<h1>wit_yuan say hello world!</h1>\n");
     printf("<body>\n");
     printf("</html>\n");
     exit(0);
}

然后:

$ gcc cgitest.c -o cgitest
$ sudo cp cgitest /var/www/cgi-bin/

在浏览器中输入:

http://192.168.1.16/cgi-bin/cgitest

执行结果如下图所示:


CGI程序执行测试
上一篇 下一篇

猜你喜欢

热点阅读