移植boa的问题

更新时间:2023-11-03 23:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

boa成功移植到S3C2410开发板上

ARM-LINUX学习整理交流 2009-06-06 16:14:27 阅读277 评论0字号:大中小

2009 05 11

一:下载源码:http://www.boa.org/ [root@localhost ~]# cd /usr/src

[root@localhost src]# tar zxvf boa-0.94.13.tar.tar [root@localhost src]# cd boa-0.94.13 [root@localhost boa-0.94.13]# cd src [root@localhost src]# ./configure

二:编译前修改的文件:

1. 修改Makefile文件,找到CC=gcc和CPP=gcc -E,分别将其改为交叉编译器安装的路径:

CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc CPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E 保存退出。

2. 修改编译方式: LDFLAGS = -g –static

注: 使用静态编译可以让目标文件自动的包含所需要的 库文件,而动态编译需要手工拷贝库文件。 3.修改/src/defines.h文件:

#define SERVER_ROOT \

4 修改boa-0.94/src/ util.c文件

修改char *get_commonlog_time(void)函数。

time_offset = 0;

5. 修改src/config.c:加Current_uid=1

6. 修改compat.h: 把第120 行的 #define

TIMEZONE_OFFSET(foo)foo##->tm_gmtoff 修改为: #define

TIMEZONE_OFFSET(foo)foo->tm_gmtoff 7.修改/src/boa.c,注释掉下面两行: /* if (setuid(0) != -1) {

DIE(\ } */

/*if (passwdbuf == NULL) { DIE(\ }*/

8 gethostbyname:: Resource temporarily unavailable

这个问题我也遇到过,我只是把src文件夹下的config.c里的if(!server_name){..........}(大概在266行到286行之间)注释掉,就能运行在板子上运行boa,到现在为止没有遇到过是么问题。但不知道以后会不会有问题。 解决:config.c /*if (!server_name) { struct hostent *he; char temp_name[100];

if (gethostname(temp_name, 100) == -1) { perror(\ exit(1); }

he = gethostbyname(temp_name); if (he == NULL) {

perror(\ exit(1); }

server_name = strdup(he->h_name); if (server_name == NULL) { perror(\ exit(1); } }*/

9. /src/log.c中的修改:注释掉:

/* if (dup2(error_log, STDERR_FILENO) == -1) { DIE(\ } */

10. 在boa.conf中的修改: (1) ServerName的设置

修改#ServerName www.your.org.here 为 ServerName www.your.org.here

注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。 注意:以下是为改为下面这样的: (2)User与Group的修改: User 0 Group 0

(3)ErrorLog /var/log/boa/error_log AccessLog /var/log/boa/access_log (4)DocumentRoot /var/www (5)DirectoryIndex index.html (6)KeepAliveMax 1000 KeepAliveTimeout 10 (7)MimeTypes /etc/mime.types

(8)ScriptAlias /cgi-bin/ /var/www/cgi-bin/

11. 此外,还需要将mime.types文件复制目标板根文件系统/etc目录下,通常可以从linux主机的 /etc目录下直接复制即可, 我重烧了几次的,要是不想重烧, 可以拷到共享目录/home下,不过要重新将/home mount到/etc上。 三:运行make进行编译,得到可执行的程序boa

[root@localhost boa-0.94.13]# cd /arms3c2410/boa/boa-0.94.13/src [root@localhost src]# make clean

rm -f y.tab.o lex.yy.o alias.o boa.o buffer.o cgi.o cgi_header.o config.o escape.o get.o hash.o ip.o log.o mmap_cache.o pipe.o queue.o read.o request.o response.o select.o signals.o util.o sublog.o timestamp.o boa core lex.yy.c y.tab.c y.tab.h *~ boa_indexer index_dir.o

[root@localhost src]# make

去掉调试信息: #/usr/local/arm/2.95.3/bin/arm-linux-strip boa

四:配置文件的修改:

1. 我用的是NFS共享文件方式,在将PC机新建一个目录:/nfs,用webmin将/nfs和/home设置为与目标板可以共享的目录。 2. 在/nfs下新建log和www目录: [root@localhost ~] # mkdir /nfs/log [root@localhost ~] # mkdir /nfs/www [root@localhost ~] # mkdir /nfs/log/boa [root@localhost ~] # mkdir /nfs/www/cgi-bin

将/usr/share/doc/HTML目录下的img目录和index.html文件拷到/nsf/www下 [root@localhost ~] # chmod 777 /nfs/log/* [root@localhost ~] # chmod 777 /nfs/www/* 3. 在/home下新建目录boa

[root@localhost ~] # mkdir /home/boa

将编译得出的可执行文件/boa-0.94.13/src中的boa文件, /boa-0.94.13/src中的defines.h文件,/boa-0.94.13中的boa.conf文件拷到/home/boa下 [root@localhost ~] # chmod 777 /home/*

4. 将/nfs和/home/boa分别mount到目标板上的/var和/etc/boa上: [root@(none) /]# ifconfig eth0 10.10.205.245

[root@(none) /]# mount -o nolock -t nfs 10.10.205.242:/home/boa /etc/boa nfs warning: mount version older than kernel

[root@(none) var]# mount -o nolock -t nfs 10.10.205.242:/nfs /var nfs warning: mount version older than kernel

本文来源:https://www.bwwdw.com/article/c9w2.html

Top