Boa服务器移植到FS_S5PC100开发板
下面是我成功移植Boa到FS_S5PC100开发板上的具体操作过程。
一、移植环境
宿主机:Ubuntu Linux 10.10
目标机:FS_S5PC100
交叉工具链:arm-none-linux-gnueabi-gcc
Boa服务器版本:boa-0.94.13
平台:arm920t fs2410 linux-2.6.35
二、下载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
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
CPP = gcc -E
修改为:
CC = arm-none-linux-gnueabi-gcc
CPP = arm-none-linux-gnueabi-gcc -E
CPP = arm-none-linux-gnueabi-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
AccessLog /var/log/boa/access_log
3、设置html文件目录:
DocumentRoot /www
4、设置默认首页:
DirectoryIndex index.html
5、设置cgi脚本目录:
ScriptAlias /cgi-bin/ /www/cgi-bin
五、根据配置文件boa.conf所做的修改创建相应目录(在开发板上执行)
1、建立/var/log/boa目录,以便存放日志文件。
2、建立/www目录,将你的主页index.html拷贝到www目录下。
3、建立/www/cgi-bin目录,用来存放一些用来测试的cgi脚本。
六、
启动boa程序:
# ./boa
看到如下信息说明Boa服务器已经成功启动起来了:
[root@farsight boa]# ./boa
[root@farsight boa]# [01/Jan/1970:00:22:28 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:22:28 +0000] boa: server built Dec 9 2013 at 17:38:19.
[01/Jan/1970:00:22:28 +0000] boa: starting server pid=976, port 80
[root@farsight boa]# [01/Jan/1970:00:22:28 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:22:28 +0000] boa: server built Dec 9 2013 at 17:38:19.
[01/Jan/1970:00:22:28 +0000] boa: starting server pid=976, port 80
七、将index.html拷贝到/www目录下,将cgi文件拷贝到/www/cgi-bin/目录下,然后
打开浏览器,输入开发板的IP,就可以访问到存放在www目录下index.html。