Boa服務器在ARM+Linux上的移植
Boa服務器在ARM+Linux上的移植
下面給大家介紹一下Boa服務器移植的具體操作步驟,希望能夠有幫助。
環境
主機:fedora
交叉工具鏈:arm-linux-gnueabihf-gcc
目標:s3c6410開發板
結合網上一些文檔,整理了一個比較完整的文檔。
1. 準備arm gcc編譯器:
下載地址:http://www.veryarm.com/arm-linux-gnueabihf-gcc
下載內容:gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz
解壓縮:$xz -d gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz
$tar -xvf gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar
$move gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux /XX/Tools/gcc-linaro-arm-linux-gnueabihf
編譯鏈接:export PATH=$PATH:/XX/Tools/gcc-linaro-arm-linux-gnueabihf
2.下載Boa源碼
下載地址: http://www.boa.org/
最新發行版本: 0.94.13
下載 boa-0.94.13.tar.gz
解壓:# tar xzf boa-0.94.13.tar.gz
3.安裝需要工具bison,flex
sudo yum install bison flex
否則會出現如下錯誤
make: yacc:命令未找到
make: *** [y.tab.c] 錯誤 127
make: lex:命令未找到
make: *** [lex.yy.c] 錯誤 127
4.修改文件
(1)修改 src/compat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
否則會出現錯誤:
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 錯誤 1
(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
否則會出現問題:boa.c:228 - icky Linux kernel bug!: No such file or directory
4、生成Makefile文件
執行:
#cd boa-0.94.13/src
#./configure
5、修改Makefile
cd src
vim Makefile
修改CC = gcc 爲 CC = arm-softfloat-linux-gnu-gcc
修改CPP = gcc -E 爲 CC = arm-softfloat-linux-gnu-gcc -E
6、編譯
make
ls -l boa
-rwxr-xr-x 1 david david 189223 2009-05-31 13:44 boa
然後爲生成的二進制文件boa瘦身
arm-softfloat-linux-gnu-strip boa
ls -l boa
-rwxr-xr-x 1 david david 61052 2009-05-31 13:51 boa
可以發現boa的大小前後差距很大這爲我們節省了很大的空間
7、Boa的配置
這一步的工作也在電腦主機上完成。
在boa-0.94.13目錄下已有一個示例boa.conf,可以在其基礎上進行修改。如下:
#vi boa.conf
(1)Group的修改
修改 Group nogroup
爲 Group 0
(2)user的修改
修改 User nobody
爲 User 0
(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
否則會出現錯誤“gethostbyname::No such file or directory”
(6)AccessLog修改
修改AccessLog /var/log/boa/access_log
爲#AccessLog /var/log/boa/access_log
否則會出現錯誤提示:“unable to dup2 the error log: Bad file descriptor”
(7)以下配置和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目錄下
8、靜態測試
測試:test.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Boa Static Test</title>
</head>
<body>
<h1> Welcome to Boa sever! </h1>
</body>
</html>
9、動態測試:
測試:test.cgi-bin
#include <stdio.h>
int main()
{
printf("Content-type: text/html\n\n");
printf("<html>\n");
printf("<head>\n");
printf("<title>CGI Output</title>\n");
printf("</head>\n");
printf("<body>");
printf("<h1> Hello, world. </h1>");
printf("</body>");
printf("</html>\n");
return 0;
}
打開一個瀏覽器輸入開發板ip看看效果
OK
boa修改版資源下載地址:
http://download.csdn.net/detail/denglei265/8836787
引用:
http://www.cnblogs.com/javawebsoa/archive/2013/08/01/3230930.html
http://www.cnblogs.com/chenchenluo/p/3576129.html
下面給大家介紹一下Boa服務器移植的具體操作步驟,希望能夠有幫助。
環境
主機:fedora
交叉工具鏈:arm-linux-gnueabihf-gcc
目標:s3c6410開發板
結合網上一些文檔,整理了一個比較完整的文檔。
1. 準備arm gcc編譯器:
下載地址:http://www.veryarm.com/arm-linux-gnueabihf-gcc
下載內容:gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz
解壓縮:$xz -d gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz
$tar -xvf gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar
$move gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux /XX/Tools/gcc-linaro-arm-linux-gnueabihf
編譯鏈接:export PATH=$PATH:/XX/Tools/gcc-linaro-arm-linux-gnueabihf
2.下載Boa源碼
下載地址: http://www.boa.org/
最新發行版本: 0.94.13
下載 boa-0.94.13.tar.gz
解壓:# tar xzf boa-0.94.13.tar.gz
3.安裝需要工具bison,flex
sudo yum install bison flex
否則會出現如下錯誤
make: yacc:命令未找到
make: *** [y.tab.c] 錯誤 127
make: lex:命令未找到
make: *** [lex.yy.c] 錯誤 127
4.修改文件
(1)修改 src/compat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
否則會出現錯誤:
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 錯誤 1
(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
否則會出現問題:boa.c:228 - icky Linux kernel bug!: No such file or directory
4、生成Makefile文件
執行:
#cd boa-0.94.13/src
#./configure
5、修改Makefile
cd src
vim Makefile
修改CC = gcc 爲 CC = arm-softfloat-linux-gnu-gcc
修改CPP = gcc -E 爲 CC = arm-softfloat-linux-gnu-gcc -E
6、編譯
make
ls -l boa
-rwxr-xr-x 1 david david 189223 2009-05-31 13:44 boa
然後爲生成的二進制文件boa瘦身
arm-softfloat-linux-gnu-strip boa
ls -l boa
-rwxr-xr-x 1 david david 61052 2009-05-31 13:51 boa
可以發現boa的大小前後差距很大這爲我們節省了很大的空間
7、Boa的配置
這一步的工作也在電腦主機上完成。
在boa-0.94.13目錄下已有一個示例boa.conf,可以在其基礎上進行修改。如下:
#vi boa.conf
(1)Group的修改
修改 Group nogroup
爲 Group 0
(2)user的修改
修改 User nobody
爲 User 0
(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
否則會出現錯誤“gethostbyname::No such file or directory”
(6)AccessLog修改
修改AccessLog /var/log/boa/access_log
爲#AccessLog /var/log/boa/access_log
否則會出現錯誤提示:“unable to dup2 the error log: Bad file descriptor”
(7)以下配置和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目錄下
8、靜態測試
測試:test.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Boa Static Test</title>
</head>
<body>
<h1> Welcome to Boa sever! </h1>
</body>
</html>
9、動態測試:
測試:test.cgi-bin
#include <stdio.h>
int main()
{
printf("Content-type: text/html\n\n");
printf("<html>\n");
printf("<head>\n");
printf("<title>CGI Output</title>\n");
printf("</head>\n");
printf("<body>");
printf("<h1> Hello, world. </h1>");
printf("</body>");
printf("</html>\n");
return 0;
}
打開一個瀏覽器輸入開發板ip看看效果
OK
boa修改版資源下載地址:
http://download.csdn.net/detail/denglei265/8836787
引用:
http://www.cnblogs.com/javawebsoa/archive/2013/08/01/3230930.html
http://www.cnblogs.com/chenchenluo/p/3576129.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.