您的位置:首页 > 运维架构 > Linux

移植Boa Web服务器到ARM-Linux系统

2010-01-22 15:13 435 查看
本次移植的主要参考资料:

1、 《嵌入式Web服务器移植 》
是网上一份Boa移植文档,比较全面。本文档就是基本参照它来写的。基本上上可以说是这篇文章的修改版,增加了我的移植经验。由于这篇文章被转载得到处都是,我实在无法找到出处。在这里衷心的感谢文章作者!!

2、 《构建嵌入式Linux系统》
的第十章 设置网络服务 中的Boa移植部分。

一、Boa程序的移植

1、下载Boa源码

下载地址:
http://www.boa.org/
目前最新发行版本: 0.94.13 (几年没更新版本了)

下载 boa-0.94.13.tar.gz,

注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式一样

解压:
[
tekkamanninja@Tekkaman-
Ninja source]
$
tar xzf boa-
0.
94.
13.
tar.
gz


2、生成Makefile文件

进入boa-
0.
94.
13,
直接运行src/configure文件
[
tekkamanninja@Tekkaman-
Ninja src]
$./configure


3、修改Makefile文件(注意:必须用cross-2.95.3, 如使用3.4.1、4.1.1等等会出错)
CC =
/
home/
tekkamanninja/
working/
source/
2.
95.
3/
bin/
arm-
linux-
gcc

CPP =
/
home/
tekkamanninja/
working/
source/
2.
95.
3/
bin/
arm-
linux-
gcc -
E




4、交叉编译
[
tekkamanninja@Tekkaman-
Ninja src]
$
make


5、去除调试信息,减小体积。(可选)
[
tekkamanninja@Tekkaman-
Ninja src]
$
/
home/
tekkamanninja/
working/
source/
2.
95.
3/
bin/
arm-
linux-
strip boa


6、将编译好的程序放入根文件系统的/bin目录下。
[
tekkamanninja@Tekkaman-
Ninja src]
$
cp boa /
home/
tekkamanninja/
working/nfs/rootfs
/
bin/


二、配置Boa


Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。
在Boa源码目录下已有一个示例boa.conf
,可以在其基础上进行修改。
[
tekkamanninja@Tekkaman-
Ninja src]
$
cd .
.
/
.
.

[
tekkamanninja@Tekkaman-
Ninja source]
$
cd .
.
/
nfs/
rootfs/
etc/

[
tekkamanninja@Tekkaman-
Ninja etc]
$
mkdir boa

[
tekkamanninja@Tekkaman-
Ninja etc]
$
chmod 777 boa/

[
tekkamanninja@Tekkaman-
Ninja etc]
$
cd boa

[
tekkamanninja@Tekkaman-
Ninja boa]
$
kwrite boa.
conf


1、Group的修改

修改 Group nogroup

为 Group user
(开发板上有的组)

修改 User nobody

为 User boa
(user组中的一个成员)
根据你的开发板的情况设定。一定要存在的组和用户。

以下是我在开发板上的操作:

[
root@~
]
#
adduser -
g user boa

Changing password for
boa

Enter the new
password (
minimum of 5,
maximum of 8 characters)

Please use a combination of upper and
lower case
letters and
numbers.

Enter new
password:

Bad password:
too short
.

Warning:
weak password (
continuing)
.

Re-
enter new
password:

passwd[
820]
:
password for
`boa' changed by user `root'

Password changed.

[
root@~
]
#


2、ScriptAlias的修改

修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/

这是在设置CGI的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录。

3、ServerName的设置

修改 #ServerName
www.your.org.here

为 ServerName
www.your.org.here

注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。你也可以设置为你自己想要的名字。比如我设置为:

ServerName tekkaman2440

此外,还需要:

将mime.types
文件复制/etc
目录下,通常可以从linux主机的 /etc目录下直接复制即可。

(以下配置和boa.conf
的配置有关)


创建日志文件所在目录/var/log/boa

创建HTML文档的主目录/var/www

创建CGI脚本所在录 /var/www/cgi-bin

[
tekkamanninja@Tekkaman-
Ninja log
]
$
mkdir -
m 777 boa

[
tekkamanninja@Tekkaman-
Ninja log
]
$
cd .
.

[
tekkamanninja@Tekkaman-
Ninja var]
$
mkdir -
m 777 www

[
tekkamanninja@Tekkaman-
Ninja var]
$
mkdir -
m 777 www/
cgi-
bin

[
tekkamanninja@Tekkaman-
Ninja var]
$
cd .
.

[
tekkamanninja@Tekkaman-
Ninja rootfs]
$
cp /
etc/
mime.
types etc/


三、运行Boa


开发板操作:

[root@~]#
boa

如果发现boa没有运行,则可以在开发板的/var/log/boa/error_log文件中找原因。

比如端口已被其他程序占用:
[
root@~
]
#
cat /
var/
log
/
boa/
error_log

[
20/
Feb/
2008:
21:
21:
57 +
0000]
boa.
c:
194 -
unable to bind
:
Address already in use


或是用户设置错误等等,都可以查到。

四、功能测试


静态网页测试

将静态网页存入根文件系统的/var/www
目录下(可以将主机 /usr/share/doc/HTML/目录下的index.html、homepage.css和img、stylesheet-images目录复制到/var/www目录下)

我参考《嵌入式Web服务器移植 》
的做法如下:

在根文件系统的/var
目录下
[
tekkamanninja@Tekkaman-
Ninja var]
$
cp /
usr/
share/
doc/
HTML/
index.
html www/

[
tekkamanninja@Tekkaman-
Ninja var]
$
cp -
r /
usr/
share/
doc/
HTML/
img www/

[
tekkamanninja@Tekkaman-
Ninja var]
$
cp /
usr/
share/
doc/
HTML/
homepage.
css www/

[
tekkamanninja@Tekkaman-
Ninja var]
$
cp -
r /
usr/
share/
doc/
HTML/
stylesheet-
images www/


直接在浏览器中输入开发板的IP地址(比如我的是http://192.168.1.2
) ,出现fedora的欢迎网页。静态HTML调试成功。

CGI功能测试

1、编写HelloworldCGI.c程序

[tekkamanninja@Tekkaman-Ninja source]$ vi helloworldCGI.c

(主程序的程序开头一定要用Tab,而不是空格,不然编译可能不通过)

#
include
<
stdio.
h>

#
include
<
stdlib.
h>

int
main(
void
)

{

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

printf
(
"<html>/n"
)
;

printf
(
"<head><title>CGI Output</title></head>/n"
)
;

printf
(
"<body>/n"
)
;

printf
(
"<h1>Hello,world.</h1>/n"
)
;

printf
(
"<body>/n"
)
;

printf
(
"</html>/n"
)
;

exit
(
0)
;

}


2.交叉编译生成CGI程序

[
tekkamanninja@Tekkaman-
Ninja source]
$
/
home/
tekkamanninja/
working/
gcc4.
1.
1/
gcc-
4.
1.
1-
glibc-
2.
3.
2/
arm-
9tdmi-
linux-
gnu/
bin/
arm-
9tdmi-
linux-
gnu-
gcc -
o helloworldCGI helloworldCGI.
c


将helloworldCGI 拷贝至根文件系统的/var/www/cgi-bin/下

[
tekkamanninja@Tekkaman-
Ninja source]
$
cp helloworldCGI .
.
/
nfs/
rootfs/
var/
www/
cgi-
bin/


3.测试

浏览器输入

http://192.168.1.2/cgi-bin/helloworldCGI

网页出现 Hello,world.
调试成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: