Boa服务器移植到Mini2440开发板
如果能在x86平台成功移植Boa服务器,那么把Boa服务器移植到开发板上运行是很容易的事情。它们移植的过程都很相似,整个移植过程我主要参考了TX的《web服务器Boa移植手册》,在此表示非常感谢。下面是我成功移植Boa到Mini2440开发板上的具体操作过程。
一、移植环境
宿主机:Red Hat Enterprise Linux 5
目标机:Mini2440
交叉工具链:arm-linux-gcc-4.3.2
Boa服务器版本:boa-0.94.13
二、下载Boa源码包,将其进行解压,并进行配置和编译。
1、下载boa-0.94.13.tar.gz,解压:
# tar zxvf boa-0.94.13.tar.gz
2、进入到boa-0.94.13下的src目录:
# cd boa-0.94.13/src
3、修改文件
(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");
}*/
否则会出现错误:
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:226 - icky Linux kernel bug!: No such file or directory
3、生成Makefile文件:
# ./configure
4、修改Makefile文件:
# vi Makefile
找到代码31,32行:
CC = gcc
CPP = gcc -E
修改为:
CC = arm-linux-gcc
CPP = arm-linux-gcc -E
5、编译:# make
此时会在src目录下生成boa可执行文件。
用ls命令查看:
# ls -l boa
-rwxr-xr-x 1 root root 199146 06-21 16:59 boa
去掉调试信息,以减少boa体积:
# arm-linux-strip boa
再用ls查看:
# ls -l boa
-rwxr-xr-x 1 root root 61192 06-21 17:00 boa
可以看到boa文件大小变小了很多。
6、将boa可执行文件拷贝到制作好的要运行在开发板的根文件系统的usr/bin目录下,并在etc目录下创建boa目录,拷贝boa-0.94.13目录下的boa.conf到boa下。
四、修改配置文件boa.conf
# vi /etc/boa/boa.conf
1、修改访问权限:
代码48行:
User nobody,修改为:User 0
代码49行:
Group nogroup,修改为:Group 0
2、设定日志目录:
ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
3、设置html文件目录:
DocumentRoot /etc/boa/www
4、设置默认首页:
DirectoryIndex index.html
5、设置cgi脚本目录:
ScriptAlias /cgi-bin/ /etc/boa/cgi-bin
五、根据配置文件boa.conf所做的修改创建相应目录
1、建立/var/log/boa目录,以便存放日志文件。
2、建立/etc/boa/www目录,将你的主页index.html拷贝到www目录下。
3、建立/etc/boa/cgi-bin目录,用来存放一些用来测试的cgi脚本。
六、在Mini2440开发板上进行测试
1、利用mkyaffs2image工具生成根文件系统映象:
# mkyaffs2image boa_rootfs boa_rootfs.img
2、将映象文件boa_rootfs.img烧写到Mini2440的nand flash中,重启开发板。
3、用网线连接好开发板和PC机,设置虚拟机、Windows和开发板的IP在同一网段。
4、启动boa程序:
# boa
查看日志文件:
# vi var/log/boa/error_log
看到下面信息说明Boa服务器已经成功启动起来:
[01/Jan/1970:00:03:52 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:03:52 +0000] boa: server built Jun 21 2012 at 16:59:46.
[01/Jan/1970:00:03:52 +0000] boa: starting server pid=491, port 80
打开浏览器,输入开发板的IP,就可以访问到存放在www目录下index.html。
阅读(2501) | 评论(0) | 转发(0) |