web 服务器 Boa 移植
2012-11-29 22:56
316 查看
一、编译 boa 程序
1、www.boa.org下载boa-tar.gz。
2、解压
3、#./configure
4、#make
编译会出错:
util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1
解决方法,修改compat.h中的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 为:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
二、修改配置文件 boa.conf
1、建立/etc/boa 目录, 并复制 boa.conf 到/etc/boa 目录下,并按照以下步骤进行修改。
2、修改访问权限:修改 User nobody 为 User 0,修改 Group nogroup 为 Group 0。 (可以为nobody)
3、 设定日志目录: boa日志有两部分, Errorlog和AccessLog, 一般情况下为/var/log/boa/error_log
和/var/log/boa/access_log 两个文件。所以根据自己的情况情况设置日志目录:
ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
注意:这里/var/log/boa 目录必须为可写, 否则会出现错误:log.c:73 – Unable to dup2 the error log: Bad file r.
在启动脚本里将 var 挂载成 ramfs: mount –n –t ramfs ramfs /var
4. 设置 html 文件目录: DocumentRoot /var/www
5. 设置默认首页: DirectoryIndex index.html
6. 设置 cgi 脚本目录: 将 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin
修改为 ScriptAlias /cgi-bin/ /var/www/cgi-bin
这些目录可以自己修改,但是要和网页存放的目录一致。
三、根据第二步设置建立相关文件夹并放入文件
1、根据(第二.3 步)的设置建立/var/boa 文件夹。
2、 根据(第二.4 步)的设置建立/var/www 文件夹, 并在此目录下存放 html 文件, 包括 index.html
文件。
3. 根据(第二.6 步)的设置建立/var/www/cgi-bin 文件夹, 并存放一些用来测试的 cgi 脚本。
四、运行 boa 程序
在 windows 下通过 http://192.168.1.230(虚拟机的 IP 地址)这种形式访问,进行测试。
五、移植到开发板
1、(第一.3 步)操作完成之后,修改 Makefile 文件,将
CC = gcc
CPP = gcc -E
改为:
CC = arm-linux-gcc
CPP = arm-linux-gcc -E
#make
#arm-linux-strip boa //去掉调试信息,减少 boa 体积
2、拷贝 PC 上/etc/mime.types 文件到开发板/etc 目录下,如果不用 mimi.types,可将 boa.conf
文件中
MimeTypes /etc/mime.types
修改为:
MimeTypes /dev/null
boa 配置相关目录
1、boa.conf 的存放目录:
默认 boa.conf 是在/etc/boa.conf 目录的,boa 运行时会自动去找/etc/bon.conf 目录。这个设定
是在 define.h 文件中定义的,可在编译之前进行修改。
2、log 目录: 分为 Errorlog 和 AccessLog 两个目录,可在 boa.conf 中修改。如:
ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
3、html 文件存放目录, 可在 boa.conf 文件中修改。如:
DocumentRoot /var/www
4、cgi 脚本存放目录, 可在 boa.conf 文件中修改。如:
ScriptAlias /cgi-bin/ /var/www/cgi-bin
5、mime.types 存放目录, 可在 boa.conf 文件中修改。如: MimeTypes /etc/mime.types
将网页文件放在/var/www 目录下,cgi 脚本放在/var/www/cgi-bin 目录下。在开发板上运行 boa,
在主机 IE 上输入开发板 IP,可看到网页。
六、常见错误
这些错误内容可查看/var/log/boa/error_log 文件
1、gethostbyname:: No such file or directory
解决办法: 修改 boa.conf 去掉 ServerName www.your.org.here 前的注释符号(#)。
2、util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: ***
[util.o]
解决办法: 修改 src/compat.h 找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
3、boa.c:211 - getpwuid: No such file or directory
解决办法: 修改 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
4、boa.c:228 - icky Linux kernel bug!: No such file or directory
解决办法: 修改 src/boa.c 注释掉下面语句:
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
即修改为:
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
5、log.c:73 unable to dup2 the error log:bad file descriptor
解决方法:
方法 1> 确定日志目录对与所有用户都具有可读/写的权限
方法 2> 修改 src/log.c (建议采用方法 1)注释掉
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}
即修改为:
#if 0
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}
#endif
1、www.boa.org下载boa-tar.gz。
2、解压
3、#./configure
4、#make
编译会出错:
util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1
解决方法,修改compat.h中的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 为:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
二、修改配置文件 boa.conf
1、建立/etc/boa 目录, 并复制 boa.conf 到/etc/boa 目录下,并按照以下步骤进行修改。
2、修改访问权限:修改 User nobody 为 User 0,修改 Group nogroup 为 Group 0。 (可以为nobody)
3、 设定日志目录: boa日志有两部分, Errorlog和AccessLog, 一般情况下为/var/log/boa/error_log
和/var/log/boa/access_log 两个文件。所以根据自己的情况情况设置日志目录:
ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
注意:这里/var/log/boa 目录必须为可写, 否则会出现错误:log.c:73 – Unable to dup2 the error log: Bad file r.
在启动脚本里将 var 挂载成 ramfs: mount –n –t ramfs ramfs /var
4. 设置 html 文件目录: DocumentRoot /var/www
5. 设置默认首页: DirectoryIndex index.html
6. 设置 cgi 脚本目录: 将 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin
修改为 ScriptAlias /cgi-bin/ /var/www/cgi-bin
这些目录可以自己修改,但是要和网页存放的目录一致。
三、根据第二步设置建立相关文件夹并放入文件
1、根据(第二.3 步)的设置建立/var/boa 文件夹。
2、 根据(第二.4 步)的设置建立/var/www 文件夹, 并在此目录下存放 html 文件, 包括 index.html
文件。
3. 根据(第二.6 步)的设置建立/var/www/cgi-bin 文件夹, 并存放一些用来测试的 cgi 脚本。
四、运行 boa 程序
在 windows 下通过 http://192.168.1.230(虚拟机的 IP 地址)这种形式访问,进行测试。
五、移植到开发板
1、(第一.3 步)操作完成之后,修改 Makefile 文件,将
CC = gcc
CPP = gcc -E
改为:
CC = arm-linux-gcc
CPP = arm-linux-gcc -E
#make
#arm-linux-strip boa //去掉调试信息,减少 boa 体积
2、拷贝 PC 上/etc/mime.types 文件到开发板/etc 目录下,如果不用 mimi.types,可将 boa.conf
文件中
MimeTypes /etc/mime.types
修改为:
MimeTypes /dev/null
boa 配置相关目录
1、boa.conf 的存放目录:
默认 boa.conf 是在/etc/boa.conf 目录的,boa 运行时会自动去找/etc/bon.conf 目录。这个设定
是在 define.h 文件中定义的,可在编译之前进行修改。
2、log 目录: 分为 Errorlog 和 AccessLog 两个目录,可在 boa.conf 中修改。如:
ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
3、html 文件存放目录, 可在 boa.conf 文件中修改。如:
DocumentRoot /var/www
4、cgi 脚本存放目录, 可在 boa.conf 文件中修改。如:
ScriptAlias /cgi-bin/ /var/www/cgi-bin
5、mime.types 存放目录, 可在 boa.conf 文件中修改。如: MimeTypes /etc/mime.types
将网页文件放在/var/www 目录下,cgi 脚本放在/var/www/cgi-bin 目录下。在开发板上运行 boa,
在主机 IE 上输入开发板 IP,可看到网页。
六、常见错误
这些错误内容可查看/var/log/boa/error_log 文件
1、gethostbyname:: No such file or directory
解决办法: 修改 boa.conf 去掉 ServerName www.your.org.here 前的注释符号(#)。
2、util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: ***
[util.o]
解决办法: 修改 src/compat.h 找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
3、boa.c:211 - getpwuid: No such file or directory
解决办法: 修改 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
4、boa.c:228 - icky Linux kernel bug!: No such file or directory
解决办法: 修改 src/boa.c 注释掉下面语句:
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
即修改为:
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
5、log.c:73 unable to dup2 the error log:bad file descriptor
解决方法:
方法 1> 确定日志目录对与所有用户都具有可读/写的权限
方法 2> 修改 src/log.c (建议采用方法 1)注释掉
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}
即修改为:
#if 0
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}
#endif
相关文章推荐
- (转)嵌入式WEB服务器BOA的移植方法(以前开发过,留下以备后用)
- 移植Boa Web服务器到ARM-Linux系统
- 嵌入式linux WEB服务器BOA的移植方法 【转自:http://hi.baidu.com/549800946/blog/item/6f9a7b31d07268a05edf0ebf.html】
- Boa Web服务器在PC和S3C2440开发板上移植
- 嵌入式WEB服务器BOA的移植方法211034328
- 嵌入式Web 服务器Boa 的移植及其应用
- boa web服务器移植
- 嵌入式WEB服务器BOA的移植方法(一)
- 嵌入式web服务器boa的编译移植
- web服务器boa移植
- 移植boa web服务器到Linux
- Web服务器移植--boa和cgic
- 移植BOA WEB服务器
- 嵌入式WEB服务器BOA的移植方法(三)
- 如何在arm平台移植boa Web服务器
- 嵌入式WEB服务器BOA的移植方法
- 移植BoaWeb服务器到ARM-Linux&mipsel-linux系统
- 嵌入式WEB服务器BOA的移植方法(二)
- 嵌入式Web服务器BOA移植
- ARM-Linux下WEB服务器Boa的移植、配置和运行测试