一、 概述
- 硬件資源:IAC-335X-Kit 開發板
- 宿主機:ubuntu16.04
- 交叉編譯工具:arm-arago-linux-gnueabi
二、 BOA搭建
- 先確定交叉編譯工具是否安裝正確。
- 安裝需要工具bison,flex
sudo apt-get install bison flex
- 解壓boa-0.94.13.tar.gz
tar –zxvf boa-0.94.13.tar.gz
- 修改文件
(1)修改 src/compat.h
找到#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
(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");
}*/
(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
註釋掉下面語句:
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
爲
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
(4)修改src/defines.h (修改boa傳輸文件的大小限制,默認1MB修改爲16MB)
找到
#define SINGLE_POST_LIMIT_DEFAULT 1024 * 1024 /* 1 MB */
修改爲
#define SINGLE_POST_LIMIT_DEFAULT 1024 * 1024 * 16 /* 16 MB */
- 生成Makefile文件
執行:
cd boa-0.94.13/src
./configure
- 修改Makefile
cd src
vim Makefile
修改CC = gcc
爲CC = arm-arago-linux-gnueabi-gcc
修改CPP = gcc -E
爲CC = arm-arago-linux-gnueabi-gcc -E
- 編譯
make
然後爲生成的二進制文件boa瘦身
arm-arago-linux-gnueabi-strip boa
三、 BOA移植
- Boa的配置(宿主機下進行)
在boa-0.94.13目錄下已有一個示例boa.conf,可以在其基礎上進行修改。如下:
vi boa.conf
(1)Group的修改
修改Group nogroup
爲Group root
(2)user的修改
修改User nobody
爲User root
(3)ScriptAlias的修改
修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
爲ScriptAlias /cgi-bin/ /www/cgi-bin/
(4)DoucmentRoot的修改
修改DoucmentRoot /var/www
爲DoucmentRoot /www
(5)ServerName的設置
修改#ServerName www.your.org.here
爲ServerName www.your.org.here
(6)AccessLog修改(訪問日誌文件,不需要可以直接#註釋)
修改AccessLog /var/log/boa/access_log
爲AccessLog /www/log/boa/access_log
- BOA移植(開發板上進行):
(1)創建目錄/etc/boa並且把boa 和 boa.conf拷貝到這個目錄下
mkdir /etc/boa
(2)創建HTML文檔的主目錄/www
mkdir /www
(3)創建CGI腳本所在錄 /www/cgi-bin
mkdir /www/cgi-bin
(4)創建日誌文件目錄及空日誌文件
mkdir /www/log
mkdir /www/log/boa
touch /www/log/boa/error_log
(5)將boa.conf拷貝到開發板根文件系統的/etc/boa下
(6)將boa拷貝到開發板根文件系統的/etc/boa下
(7)將宿主機下/etc/mime.types拷貝到開發板根文件系統的/etc下 - 測試
(1)在開發板運行BOA程序
/etc/boa/boa
出現如下圖信息即可
(2)靜態網頁測試
隨便找個*.html文件放入/www目錄下,在瀏覽器中地址欄輸入 開發板ip/*.html,訪問成功即可。