Web服務組件boa的安裝與配置


在嵌入式Linux系統中,實現Web服務的組件有很多,它們大多是輕量級的,對系統資源的占用不大,對嵌入式CPU的開銷也不大。比較常見的組件有boa、thttpd、mini_httpd、mongoose、lighttpd、appweb以及apache等。下面就以流行廣泛的boa為例來進行安裝和配置。

一、下載

Boa的官方網站為www.boa.org,其源代碼可直接從官網下載,本例下載的版本為boa-0.94.13.tar.tar。

下載完成后對源碼進行解壓,執行“tar –xvf boa-0.94.13.tar.tar –C /”,把源碼解壓到根目錄下。解壓完成后執行“cd /boa-0.94.13/src”,進入到源碼目錄。

二、配置

在源碼目錄下,執行“./configure”對其進行配置。配置結束后會生成Makefile文件,用Vi打開該文件,找到第31、32兩行,原來的代碼為“CC = gcc”和“CPP = gcc -E”,要把這兩行改為使用交叉編譯工具編譯,改為“CC = arm-linux-gcc”和“CPP = arm-linux-gcc -E”。然后再找到第23行,原來的代碼為“LDFLAGS= -g”,要把它改為靜態庫方式,改為“LDFLAGS = -g -static”。全部改完后存盤退出。

接下來找到compat.h文件並打開它,找到第120行,原來的代碼為“#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff”,把它改為“#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff”,即把兩個#號去掉。完成后存盤退出。

找到主文件boa.c並打開它,把其中的第210~212行和225~227行注釋掉(或刪除掉),如下:

210    //     if (passwdbuf == NULL) {

211    //         DIE("getpwuid");

212    //     }

 …………

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

226    //         DIE("icky Linux kernel bug!");

227    //     }

其余部分不變,改完后存盤退出。

最后找到log.c文件,打開它並找到第72~74行,其代碼如下:

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

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

74         }

這里要把它們注釋掉,可改成下面的形式。

72         #if 0

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

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

75         }

76         #endif

其余部分不變,更改完成后存盤退出。

三、編譯

完成配置后,在/boa-0.94.13/src目錄下執行make命令進行編譯,本例所使用的交叉編譯工具鏈為4.4.3版本。

編譯完成后就會在當前目錄生成可執行文件boa。

四、安裝和部署

把剛才編譯好的文件boa拷貝到嵌入式開發板上的/usr/bin目錄下。

接下來在嵌入式開發板上執行“mkdir –p /etc/boa”,新建boa配置目錄。然后把剛才解壓的boa源碼下的配置文件boa.conf(在boa-0.94.13目錄下)拷貝到嵌入式開發板的/etc/boa目錄下。

接下來要更改配置文件boa.conf,按以下步驟進行(在開發板上完成)。

1、用vi打開boa.conf,找到第48、49兩行,原來的代碼為“User nobody”和“Group nogroup”,把它們改為“User root”和“Group root”,以指定root為其用戶和組。

2、找到第94行,原來的代碼為“#ServerName www.your.org.here”,現在把它前面的#號去掉,改為“ServerName www.your.org.here”。

3、找到第111行,原來的代碼為“DocumentRoot /var/www”,這里是指定網頁存放的根目錄,可按實際需求進行更改,本例把它放到home目錄下,改為“DocumentRoot /home/www”。

4、找到第74行,原來的代碼為“AccessLog /var/log/boa/access_log”,這里把它改為“AccessLog /home/www/log/boa/access_log”。

5、找到第193行,原來的代碼為“ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/”,這里把它改為“ScriptAlias /cgi-bin/ /home/www/cgi-bin/”。

全部完成后存盤退出。

接下來要在嵌入式開發板上建立剛才配置的目錄 ,如下:

1、執行“mkdir –p /home/www”,建立網頁文件的根目錄。

2、執行“mkdir –p /home/www/log/boa”,建立日志目錄。

3、執行“mkdir –p /home/www/cgi-bin”,建立CGI目錄。

4、執行“touch /home/www/log/boa/access_log”,新建一個日志文件。

接下來在嵌入式開發板的/etc目錄下查看一下有沒有文件mimi.types,如果沒有可以從虛擬機的/etc/目錄下拷貝一個過來。

五、測試

以上工作全部完成后就可以進行測試了,在嵌入式開發板上執行boa並回車,如果正常的話可看到控制台上打印出以下信息。

[29/May/2019:10:24:00 +0000] boa: server version Boa/0.94.13

[29/May/2019:10:24:00 +0000] boa: server built May 29 2019 at 10:19:44.

[29/May/2019:10:24:00 +0000] boa: starting server pid=1111, port 80

此時表明boa的web服務已經正常啟動了。需要注意的是,boa啟動后就以服務的形式在后台運行了,要重新啟動需要把原來的boa進程結束掉才行。(可通過ps命令查看boa的進程號,然后通過“kill -9 進程號”來結束進程。)

正常啟動后就可以進行測試了。先在/home/www/目錄下新建一個測試頁面,執行“vi index.html”,然后在其中寫入一句“This is a test Page!”,然后存盤退出。為了完成測試,可拷貝一個圖標文件到/home/www目錄下,並把文件名稱改為favicon.ico。完成后進行測試,在PC機上打開瀏覽器,在地址欄中輸入嵌入式開發板的IP地址(本例為192.168.1.90),然后回車,就可以看以剛才的測試頁面了。如下。 

接下來進行CGI程序測試。在虛擬機下新建一個CGI測試文件,執行“vi hello_cgi.c”,然后在其中輸入以下程序。

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

        printf("Content-type:text/html\n\n");

        printf("Hello world!");

        exit(0);

}

然后執行“arm-linux-gcc hello_cgi.c –o hello_cgi”對其進行交叉編譯,完成后把生成的可執行文件hello_cgi拷貝到嵌入式開發板上的/home/www/cgi-bin目錄下。然后再樣在PC機上的瀏覽器中進行測試,在地址欄中輸入http://192.168.1.90/cgi-bin/hello_cgi並回車。如果正常的話會顯示出如下的頁面。

至此,boa在嵌入式Linux下的安裝配置全部完畢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM