BOA服务器的移植
1、源码下载
http://www.boa.org/
News! (last updated 23 February 2005)
Latest Released Version (0.94.13) here (signature here) --- 下载地址
1.1 boa简介:
其可执行代码只有大约60KB左右,Boa是一个单任务的HTTP服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。Boa支持CGI。
Boa的设计目标是速度和安全。(CGI只是一个进程,用来提供接口),自动目录生成和自动文件枪支进行拼接。
Boa的主要设计目标是速度和安全性。安全性在“不能被恶意用户破坏”的意义上,不是“细粒度访问控制和加密通信”。
特点:可靠性和可移植性,Boa不是作为功能强大的服务器。
开发平台:GNU / Linux是目前的开发平台。
推荐:GoAhead Apache2
跨平台移植三部曲:
1、./configure生成一个Makefile ./configure --prefix --host
2、make
3、make install
2、解压源码:
tar -xvf boa-0.94.13.tar.gz
3、进入源码目录下的src目录:
cd boa-0.94.13/src/
在源码目录下配置与编译。执行
./configure
这是根据configure.in文件进行一系列的配置,生成config.status,configure,和Makefile文件。
如果无法执行,考虑权限,修改该目录下的configure的属性为可执行 chmod 755 configure
4、make 编译源码:
问题1:
目录: boa-0.94.13/src$ make
yacc -d boa_grammar.y
make: yacc: Command not found
make: *** [y.tab.c] Error 127
解决方法:
/boa-0.94.13/src$ sudo apt-get install bison
问题2:
yacc -d boa_grammar.y
gcc -g -O2 -pipe -Wall -I. -c -o y.tab.o y.tab.c
......
lex boa_lexer.l
make: lex: Command not found
make: *** [lex.yy.c] Error 127
解决方法:
/boa-0.94.13/src$ sudo apt-get install flex
WARNING: The following packages cannot be authenticated!
libfl-dev flex
Install these packages without verification? [y/N]
E: Some packages could not be authenticated
注意加参数-f 自动搜索依赖,下面选择y : sudo apt-get install flex -f
Do you want to continue? [Y/n] y
WARNING: The following packages cannot be authenticated!
libfl-dev flex
Install these packages without verification? [y/N] y
问题3:
util.c: In function ‘get_commonlog_time’:
util.c:100:39: error: pasting "t" and "->" does not give a valid preprocessing token
time_offset = TIMEZONE_OFFSET(t); ^
compat.h:120:30: note: in definition of macro ‘TIMEZONE_OFFSET’
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff ^
make: *** [util.o] Error 1
问题描述:在compat.h文件中的宏定义问题: ‘TIMEZONE_OFFSET’
解决方法:
修改 boa-0.94.13/src$ vi compat.h +120
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
将boa.c中的 vi boa.c
225 #if 0 //注释掉
226 if (setuid(0) != -1) {
227 DIE("icky Linux kernel bug!");
228 }
229 #endif
这三行注释掉,否则boa启动时会出现“boa.c:226 - icky linux kernel bug!: No suchfile or directory错误”
清除之前编译的内容 make clean (防止某些依赖的信息出现问题)
重新make
再次boa-0.94.13/src$ make
make: Nothing to be done for `all'.
make主要检查的是时间戳, 只要target比依赖的文件时间靠后它就认为不需要编译
5.建立安装目录
sudo mkdir -p /boa /boa/www /boa/cgi-bin /boa/log
将src/defines.h中的
#define SERVER_ROOT "/etc/boa"
修改为
#define SERVER_ROOT "/boa"
(这样boa程序启动时会在/boa目录下寻找boa.conf配置文件,并且将/boa文件夹作为服务器的根目录)。
将需要的文件复制到安装目录中
将boa-0.94.13/src目录下生成的boa、boa_indexer二进制文件复制到/boa下
sudo cp boa boa_indexer /boa
将boa-0.94.13目录下的boa.conf文件复制到/boa下
sudo cp boa.conf /boa
可选项: arm-linux-strip boa(去掉boa中的调试信息,只是减小文件的大小可以执行也可以不执行)
将/etc/mime.types复制到/boa目录下
sudo cp /etc/mime.types /boa
7、返回boa的顶层目录 --- 修改配置文件
boa-0.94.13$ ls
boa.conf contrib docs extras README
ChangeLog CREDITS examples Gnu_License src
vi boa.conf, //几乎全部指定到boa的目录下,这样方便我们进行管理
重新指定一些文件的生成路径,因为重新指定这些路径后会帮助我们深刻的理解关于boa服务器的工作机制
Port 80
User 0
Group 0
# bind调用的IP地址,一般注释掉,表明绑定到INADDR_ANY,通配于服务器的所有IP地址
#Listen 192.68.0.5
##### error_log和access_log会自动生成,只要指定生成路径就可以了。
ErrorLog /boa/log/error_log
AccessLog /boa/log/access_log
##### 存放HTML文件的根路径
DocumentRoot /boa/www
UserDir public_html
##### 默认页面,若之输入http://127.0.0.1/则会自动返回给浏览器默认页面index
BOA服务器的移植
最新推荐文章于 2024-10-14 23:23:18 发布

最低0.47元/天 解锁文章
408





