1. 程式人生 > >boa伺服器搭建及移植

boa伺服器搭建及移植

1、解壓

將下載的原始碼壓縮包放到某目錄下,然後執行:

tar –xvzf  boa-0.94.13.tar.tar

sudo apt-get install bison flex

否則會出現如下錯誤

make: yacc:命令未找到
       make: *** [y.tab.c] 錯誤 127

make: lex:命令未找到
       make: *** [lex.yy.c] 錯誤 1

我下載了兩個安裝包flex-2.5.37.tar.gz和byacc-1.9.tar.gz 沒有安裝會報錯。

2、進入/boa-0.94.13/src目錄,可以看到如下檔案

Ubuntu系統配置BOA伺服器圖文詳解

修改compat.h檔案

#ifdef HAVE_TM_GMTOFF

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

#else

#define TIMEZONE_OFFSET(foo) timezone

#endif

改為:

#ifdef HAVE_TM_GMTOFF

#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff

#else

#define TIMEZONE_OFFSET(foo) timezone

#endif

(2)修改 src/log.c 註釋掉 
if (dup2(error_log, STDERR_FILENO) == -1) {                          DIE("unable to dup2 the error log");                    } 為: 
/*if (dup2(error_log, STDERR_FILENO) == -1) {                          DIE("unable to dup2 the error log");                    }*/ 否則會出現錯誤: 
log.c:73 unable to dup2 the error log:bad file descriptor 

(3)修改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

否則會出現錯誤:boa.c:211 - getpwuid: No such file or directory

註釋掉下面語句:

if (setuid(0) != -1) {
                        DIE(”icky Linux kernel bug!”);
        }

#if 0
         if (setuid(0) != -1) {
                        DIE(”icky Linux kernel bug!”);
                }

#endif


3.執行:./configure

之後,可以檢視,生成了些新檔案:

Ubuntu系統配置BOA伺服器圖文詳解

再執行make 可能會出錯 如果提示

此時生成更多目標檔案:

Ubuntu系統配置BOA伺服器圖文詳解

4.拷貝/boa-0.94.13/boa.conf 到/etc/boa目錄下:

mkdir /etc/boa

cp boa.conf /etc/boa

5.進入/etc/boa目錄,開啟boa.conf檔案,並做如下修改:

(1)將User nobody和Group nogroup 分別改為:User 0和Group 0,如下所示:

Ubuntu系統配置BOA伺服器圖文詳解

(2)修改路徑

Ubuntu系統配置BOA伺服器圖文詳解

改為:

Ubuntu系統配置BOA伺服器圖文詳解

儲存後退出

6.根據boa.conf建立必要的目錄

(1)存放網頁目錄:mkdir /var/www

(2)存放CGI檔案目錄:mkdir /var/www/cgi-bin

(3)存放日誌目錄:mkdir /var/log/boa/

7.建立用於測試的index.html檔案(網頁首頁)

<HTML>

<HEAD>

<TITLE>Hello World</TITLE>

</HEAD>

<BODY>

Hello,my world!

</BODY>

</HTML>

儲存為index.html,並存至/var/www目錄下

8.啟動伺服器

執行./boa

通過ps -e檢視:

Ubuntu系統配置BOA伺服器圖文詳解

可見,程序PID為3449,表明已經啟動成功。此時,也可以檢視日誌檔案:vi /var/log/boa/error_log

Ubuntu系統配置BOA伺服器圖文詳解

可以看到伺服器啟動的程序ID和埠號。

9.訪問伺服器

成功啟動後,當然要看看是否真正可以通過瀏覽器看到伺服器中的網頁。

開啟網頁,輸入本機的ip(我的是虛擬機器,ip地址設定為是192.168.1.3)

則可以看到網頁:

Ubuntu系統配置BOA伺服器圖文詳解

看吧,成功了

這是PC機上的搭建  

主要是修改Makefile

CC =arm-linux-gcc

CPP = arm-linux-gcc–E

然後交叉編譯 ftp進板子 

以下配置和boa.conf的配置有關,都是在ARM根檔案系統中建立

以下步驟在開發板上進行:

建立目錄/etc/boa並且把boa 和 boa.conf拷貝到這個目錄下

mkdir /etc/boa

建立HTML文件的主目錄/www

mkdir /www點選開啟連結

建立CGI指令碼所在錄 /www/cgi-bin

mkdir /www/cgi-bin

以下步驟在ubuntu下進行:

將boa.conf拷貝到開發板根檔案系統的/etc/boa下

#cp boa.conf /source/rootfs/etc/boa

將boa拷貝到開發板根檔案系統的/etc/boa下

#cp src/boa /source/rootfs/etc/boa

將ubuntu下/etc/mime.types拷貝到開發板根檔案系統的/etc下

#cp /etc/mime.types /source/rootfs/etc

將你的主頁index.html拷貝到www目錄下

點選開啟連結這是boa和cgi程式搭建的一個基礎教程 注意CGI的編寫規範 開頭