在web伺服器中,較為常用的是tomcat,nigix。但是這種伺服器比較大,占用資源比較多,並不適合於嵌入式裝置中。而boa是乙個很輕便的web伺服器,部署簡單,占用資源少,支援多種語言。
2.配置boa的編譯環境
安裝bison:
sudo apt-get install bison
安裝flex:
sudo apt-get install flex
解壓壓縮包:
tar -xvf boa-0.94.13.tar.gz
3.編譯配置
進入目錄 boa-0.94.13/src
配置:
./configure
4.編譯
make
5.修改配置檔案boa-0.94.13/boa.conf
a.將group nobody 改為group 0
這裡group 0使用者即為root使用者,修改之後boa伺服器擁有更高的許可權。這裡可根據需要進行修改
b.最後一行改為scriptalias /cgi-bin/ /var/www/cgi-bin/
c.修改compat.h第120行 #define timezone_offset(foo) foo##->tm_gmtoff
改為 #define timezone_offset(foo) foo->tm_gmtoff
6.部署到linux中
a.將boa-0.94.13/src中的boa boa_indxer拷貝到linux的/bin目錄,並新增777q許可權
b.在/etc新建目錄,mkdir boa,將 boa-0.94.13/boa.conf拷貝到/etc/boa
c.在/var目錄下新建www目錄,並在/var/www/ 下新建cgi-bin目錄
d.在/var/log 新建 boa目錄,用於存放生成的log檔案
7.將index.html放到/var/www目錄下
8.將c語言編譯生成的.cgi檔案放到/var/www/cgi-bin目錄下
7.啟動boa
boa
8.在瀏覽器下輸入linux的ip位址即可訪問到web。
在執行boa**現的一下問題及解決方法:
1.如果需要訪問系統變數,需要修改執行使用者為root,將boa.conf的group nobody修改為
group root,同時需要修改boa-0.94.13/src/boa.c,將下面的程式注釋226行,否則無法以root執行
if (setuid(0) != -1)
修改之後重新編譯,把新生成的boa_indxer拷貝到linux的/bin目錄
2.使用shell 作為cgi程式格式為:
#!/bin/bash
path=/bin:/sbin:/usr/bin:/usr/sbin
echo -e 「content-type:text/html\n\n」
echo 「hello boa shell cgi」
檔案儲存為.cgi字尾
3.使用sqlite3作為資料庫時,需要將資料檔案所在的資料夾新增可執行許可權,如user.db存放在sqlite3資料夾下,需要同時給資料夾和資料庫新增許可權,執行以下命令
chmod 777 sqlite3/
chmod 777 user.db
解決:修改boa.conf
將 #servername www.your.org.here
改為:servername www.your.org.here
5.當cgi服務程式呼叫linux的系統命令是,要使用命令時,需要執行命令的路徑而不能直接使用該命令。例如掉用ls時不能直接使用ls,而需要執行ls的路徑 /bin/ls
6.如果要使用c語言的框架,可以使用cgic。不使用也可以參考裡面的一些寫法。
交叉編譯嵌入式web伺服器boa
步驟大部分都一樣吧,只是交叉編譯器會有不同.第一步boa 程式的移植 目標板為xscale pxa270 交叉編譯器arm linux gcc 去網上下了乙份源 http www.boa.org cgipath the value of the path environment variable g...
基於arm的嵌入式boa伺服器移植
cd src 內容如下 修改makefile檔案,修改部分配置如下 cc arm linux gcc cpp arm linux gcc e 將compat.h檔案的 define timezone offset foo foo tm gmtoff修改為 define timezone offset...
嵌入式web伺服器BOA原始碼解析
boa是乙個單程序的web伺服器,支援cgi互動,瀏覽器每次傳送乙個poat請求,boa會對應fork乙個cgi程序,資料傳送完成後,cgi程序退出,儘管存在這樣的程序建立和銷毀的開銷,但boa仍然是一款輕量級的web伺服器,適用於需要較為簡單的web頁面訪問。下面對boa的主要部分進行 分析,包含...